Resource

Matches

Pull paginated match notifications. Use this if you can't host a webhook — or as a recovery mechanism if your webhook missed some deliveries.

GET /api/v1/matches

curl https://fundingscout.io/api/v1/matches?limit=100 \
  -H "Authorization: Bearer $FS_KEY"

Query parameters

ParamTypeDefaultNotes
sinceISO 8601Return matches with created_at < since. Pass next_cursor from previous response.
limitinteger50Max 200 per page.
statuscsvallFilter by webhook_status. Values: delivered, failed, no_webhook, pending. Combine with comma: ?status=failed,no_webhook.

Response (200)

{
  "data": [
    {
      "match_id": "f1b2c3d4-...",
      "match_type": "account_domain",
      "matched": {
        "account_external_id": "0014x000007xY3oAAE",
        "contact_external_id": null
      },
      "webhook_status": "delivered",
      "webhook_response_code": 200,
      "delivered_at": "2026-05-12T01:54:01Z",
      "created_at": "2026-05-12T01:54:00Z",
      "funding_round": {
        "id": "9e34cb64-...",
        "company_name": "Vellum AI",
        "amount_usd": 20000000,
        "funding_type": "series-a",
        "website": "https://vellum.ai",
        "article_url": "https://www.businesswire.com/...",
        "published_date": "2026-05-12",
        "ceo_name": "Akash Sharma",
        "ceo_email": "akash@vellum.ai",
        "industry": "AI Infrastructure",
        "investors": ["Spark Capital", "..."],
        "confidence_score": 0.95
      }
    }
    // ... more matches
  ],
  "next_cursor": "2026-05-11T17:33:14Z"   // pass as ?since= on next call; null when no more pages
}

Common patterns

Polling-only customer (no webhook)

Run this every 15 minutes via cron:

# 1. Read last cursor from your DB
LAST_CURSOR=$(cat last_cursor.txt 2>/dev/null || echo "")

# 2. Fetch new matches
URL="https://fundingscout.io/api/v1/matches?limit=200"
[ -n "$LAST_CURSOR" ] && URL="$URL&since=$LAST_CURSOR"

RESPONSE=$(curl -sS "$URL" -H "Authorization: Bearer $FS_KEY")

# 3. Process matches + save new cursor
echo "$RESPONSE" | jq '.data[]' | your_processor.py
echo "$RESPONSE" | jq -r '.next_cursor' > last_cursor.txt

Webhook recovery (find failed deliveries)

Find matches that failed delivery so you can reprocess them:

curl "https://fundingscout.io/api/v1/matches?status=failed&limit=200" \
  -H "Authorization: Bearer $FS_KEY"

Inspect a single match

After receiving a webhook, you can pull the same match back from the API by filtering on dates:

# Pull matches from the last hour
HOUR_AGO=$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ)
curl "https://fundingscout.io/api/v1/matches?since=$HOUR_AGO" \
  -H "Authorization: Bearer $FS_KEY"

Ordering and consistency

  • Results are ordered by created_at DESC (newest first).
  • A match appears in this endpoint at the same time the webhook fires — no extra delay. Both surfaces draw from the same row.
  • The cursor (next_cursor) is the created_at of the last item on the page. There's no separate opaque cursor format.
  • If the API returns fewer than limit rows, next_cursor is null — you've reached the end.