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—PerplexitySome AI assistants fetch your page live while they answer, rather than relying on training data. When one of them reads your page during a check — confirmed by reverse DNS — and the answer reproduces your content, we mark that citation 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.