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
| Param | Type | Default | Notes |
|---|---|---|---|
since | ISO 8601 | — | Return matches with created_at < since. Pass next_cursor from previous response. |
limit | integer | 50 | Max 200 per page. |
status | csv | all | Filter 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.txtWebhook 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 thecreated_atof the last item on the page. There's no separate opaque cursor format. - If the API returns fewer than
limitrows,next_cursorisnull— you've reached the end.