> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scrape.st/llms.txt
> Use this file to discover all available pages before exploring further.

# Token Mentions

> Search backfilled data for specific token or contract address mentions

Search through the backfilled history of all tracked sources (e.g. KOLs) for mentions of a specific token ticker or contract address.

<Note>This endpoint is rate-limited to **30 requests per 60 seconds**.</Note>

## Query Parameters

You must provide at least one of `ticker` or `contractAddress`. If both are provided, results will match mentions that contain *either* the ticker OR the contract address.

<ParamField query="ticker" type="string">
  Filter by token ticker (e.g. `$SOL`, `BTC`).
</ParamField>

<ParamField query="contractAddress" type="string">
  Filter by token contract address.
</ParamField>

<ParamField query="source" type="string">
  Filter by a specific source platform. Valid values: `X`, `DISCORD`, `TELEGRAM`
</ParamField>

<ParamField query="order" type="string" default="desc">
  Sort order by creation date. Valid values: `asc`, `desc`
</ParamField>

<ParamField query="limit" type="number" default="50">
  Number of records to return per page (1–100)
</ParamField>

<ParamField query="cursor" type="string">
  Pagination cursor — the `id` of the last record from the previous page. Pass
  the `nextCursor` value from the previous response to fetch the next page.
</ParamField>

## Response

<ResponseField name="data" type="array">
  Array of matched backfill data objects. Each object contains: - `id` — Unique
  record ID - `source` — Source type (`X`, `DISCORD`, `TELEGRAM`) - `messageId`
  — External message ID (e.g. tweet ID) - `sourceId` — External source ID (e.g.
  X user ID) - `content` — Extracted text content - `rawPayload` — Full raw JSON
  payload from the source - `createdAt` — Timestamp of the original message
</ResponseField>

<ResponseField name="nextCursor" type="string | null">
  Cursor for fetching the next page. `null` when there are no more results.
</ResponseField>

<ResponseField name="limit" type="number">
  The limit that was applied.
</ResponseField>

<RequestExample>
  ```bash By Ticker theme={null}
  curl -X GET "https://scrape.st/mentions?ticker=\$SOL" \
    -H "x-api-key: YOUR_API_KEY"
  ```

  ```bash By Contract Address theme={null}
  curl -X GET "https://scrape.st/mentions?contractAddress=0x123abc..." \
    -H "x-api-key: YOUR_API_KEY"
  ```

  ```bash Both (OR condition) theme={null}
  curl -X GET "https://scrape.st/mentions?ticker=\$PEPE&contractAddress=0x6982508145454Ce325dDbE47a25d4ec3d2311933" \
    -H "x-api-key: YOUR_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "data": [
      {
        "id": "cm9abc123def456",
        "source": "X",
        "messageId": "1886493083207827456",
        "sourceId": "12",
        "content": "I am so bullish on $SOL right now!",
        "rawPayload": {
          "id": "1886493083207827456",
          "text": "I am so bullish on $SOL right now!",
          "created_at": "2026-04-20T15:30:00.000Z",
          "favorite_count": 15000,
          "author": {
            "id": "12",
            "name": "Jack",
            "screen_name": "jack"
          }
        },
        "createdAt": "2026-04-20T15:30:00.000Z"
      }
    ],
    "nextCursor": "cm9xyz789ghi012",
    "limit": 50
  }
  ```
</ResponseExample>
