List citations
/v1/citationsReturns 1 row for each source that a complete answer cites, oldest answer first, then in the order of the sources in the answer. To get the rows of 1 domain, send domain. For example, domain=g2.com returns every citation of g2.com.
For the total citations of each domain or page, use the citations report.
Authorization
apiKey An API key that you create in the Lumirank dashboard, on the Settings > API keys page. Send it in the Authorization header: Bearer lr_....
In: header
Query Parameters
The first day of the date range, as a UTC date in the format YYYY-MM-DD. The range includes this day. The default is 29 days before end_date, so the default range is 30 days.
dateThe last day of the date range, as a UTC date in the format YYYY-MM-DD. The range includes this day. The default is today. The range can be at most 90 days long.
dateThe ids of the prompts to include, separated by commas. Without it, every prompt that is not archived is included. The id of an archived prompt gets status 400 unless you send include_archived=true.
Return only the citations of 1 domain, for example g2.com. Capital letters and a leading www. are ignored.
The engines to include, separated by commas: chatgpt, gemini, perplexity, ai_mode, copilot, google_ai_overview, claude. Without it, every engine is included.
The countries to include, separated by commas, as 2-letter ISO 3166-1 country codes in capital or small letters. Without it, every country is included.
Send true to include the answers of archived prompts. The default is false: they are left out, as in the dashboard.
falseThe number of rows on each page, from 1 to 100. The default is 50.
int32The number of rows to skip before this page starts. The default is 0. For the next page, add limit to offset.
int32Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/citations?start_date=2026-09-01&end_date=2026-09-30&prompt_id=a41e7c52-3d6b-4f0a-9c8e-1b2d3e4f5a60&domain=g2.com&engine=chatgpt%2Cperplexity&country=US&include_archived=true&limit=50&offset=0"citations
{ "data": [ { "answer_id": "f3a91c27-8d4e-4b5f-a6c7-9e0f1a2b3c4d", "answered_at": "2026-10-07T04:12:55Z", "engine": "chatgpt", "country": "US", "prompt_id": "a41e7c52-3d6b-4f0a-9c8e-1b2d3e4f5a60", "url": "https://www.g2.com/categories/crm", "domain": "g2.com", "title": "Best CRM Software", "position": 0, "kind": "linked", "is_own_domain": false } ], "meta": { "total": 8120, "limit": 1, "offset": 0, "has_more": true }}Get an answer GET
Returns 1 complete answer, with the brands it ranks or names and the sources it cites. The id of another brand's answer, or of an answer that is not complete, gets status `404`.
List mentions GET
Returns 1 row for each brand that a complete answer ranks or names, oldest answer first. Inside an answer, the ranked brands come first. A brand that the answer names only in its text has `position: null`. Your own brand has rows too, with `is_self: true`. To get the rows of 1 brand, send its `competitor_id`. For example, the id of Globex returns every answer that ranks or names Globex.