Grail

Quickstart

Grab a key, make one request, read a real price. Keys are instant — 100 requests a month free, no card.

1. Get a key

Create a free account and mint an API key in the dashboard — no sales call, no card for the free tier. Keys look like grail_… and go in an Authorization: Bearer header.

2. Make your first call

curl

curl -H "Authorization: Bearer $GRAIL_KEY" \
  "https://grail.solutions/v1/scrape?keyword=leica+m6&count=60&sold=true"

Python

import requests

r = requests.get(
    "https://grail.solutions/v1/scrape",
    params={"keyword": "leica m6", "count": 60, "sold": "true"},
    headers={"Authorization": f"Bearer {GRAIL_KEY}"},
)
data = r.json()
print(data["rawMedian"], len(data["items"]))

Node

const r = await fetch(
  "https://grail.solutions/v1/scrape?keyword=leica+m6&count=60&sold=true",
  { headers: { Authorization: `Bearer ${process.env.GRAIL_KEY}` } },
);
const data = await r.json();
console.log(data.rawMedian, data.items.length);

3. Read the response

Sold listings live in items — up to 240 rows with price, shipping, currency, date, condition, and a link to the original. The top-level summary gives you rawMedian and rawSampleCount; the summary block adds mean / min / max / p25 / p75 over the set. Cleaning is opt-in — pass relevance=true to strip accessories and parts before the median.

4. Pick your door

  • REST — what you just called. Every endpoint is in the API reference.
  • MCP — drop the hosted server into Claude, Cursor, or any agent: MCP connector.
  • RapidAPI — subscribe there and call the same data: RapidAPI guide.
  • Apify — run it as an actor: Apify guide.

5. Next