Read your AI data programmatically
The Unsourced Developer API lets you pull citation and bot activity data into your own dashboards, scripts, or reporting tools. Read-only, with a generous fair-use rate limit (600 requests/hour per account) to keep it fast for everyone.
Base URL
https://unsourced.app/api
All endpoints are relative to this base. HTTPS only.
Authentication
All data endpoints require an API key. Keys are created in Settings → Developer API (Studio and Agency plans). Each key is shown once at creation — store it securely. Up to 5 active keys per account.
Pass your key in one of two ways:
Authorization header (recommended)
Authorization: Bearer unsk_your_api_key_here
X-Api-Key header
X-Api-Key: unsk_your_api_key_here
Key format: all keys start with unsk_ followed by 64 hex characters. Invalid or revoked keys return 401 api_key_required or 401 invalid_api_key. All endpoints share a fair-use limit of 600 requests/hour per account; exceeding it returns 429 with a Retry-After header.
Endpoints
/developer/eventsRecent AI bot detections for your account, sorted newest first. One record per bot per crawl event, so bot_name and total_hits always describe the same bot.
Query parameters
site_iduuidoptionalFilter to a single site. Omit to return events across all sites.limitintegeroptionalNumber of records to return. Min 1, max 500. Default 50.Response
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"site_id": "3fa85f64-5717-4562-b3fc-2c963f66afb7",
"bot_name": "GPTBot",
"total_hits": 14,
"page_url": null,
"created_at": "2025-05-20T09:14:00.000000+00:00"
}
]Example
curl -H "Authorization: Bearer unsk_your_key" \ "https://unsourced.app/api/developer/events?limit=10"
/developer/citationsRecent citation check results from your weekly and on-demand scans, sorted newest first. Each record is one AI assistant response for one prompt — showing whether your site was cited.
Query parameters
site_iduuidoptionalFilter to a single site. Omit for all sites.cited_onlybooleanoptionalSet to true to return only records where your site was cited. Default false.limitintegeroptionalNumber of records to return. Min 1, max 500. Default 50.Response
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"site_id": "3fa85f64-5717-4562-b3fc-2c963f66afb7",
"provider": "perplexity",
"prompt": "best tools for tracking AI citations",
"cited": true,
"match_context": "…Unsourced provides real-time monitoring…",
"competitor_domains": ["ahrefs.com", "semrush.com"],
"created_at": "2025-05-20T08:00:00.000000+00:00"
}
]Example
curl -H "Authorization: Bearer unsk_your_key" \ "https://unsourced.app/api/developer/citations?cited_only=true&limit=20"
/developer/statsAggregate totals across all sites and all time for your account. Useful for a top-level summary in dashboards or reports.
Response
{
"total_bot_hits": 1842,
"total_citation_checks": 640,
"total_citations_found": 112,
"citation_rate_pct": 18
}Example
curl -H "Authorization: Bearer unsk_your_key" \ "https://unsourced.app/api/developer/stats"
Provider values
The provider field in citation records is one of:
anthropic—Claude (Anthropic)openai—ChatGPT (OpenAI)openai_search—ChatGPT with web searchgoogle—Gemini (Google)google_grounded—Gemini with Google Searchgrok—Grok (xAI)meta—Meta Llama (via Groq)perplexity—PerplexityLive crawl providers visit your site in real time during a scan. When one of these providers fetches your page — verified by reverse DNS — and the answer reproduces your content, the citation is marked as a confirmed live crawl.
Error responses
api_key_requiredNo API key was provided in the request.invalid_api_keyThe key does not exist or has been revoked.pro_requiredYour account is not on the Studio plan.—Rate limit reached. Retry after the interval in the Retry-After header.Ready to start building?
API keys are available on the Studio plan. Create a key in Settings → Developer API.