API & MCP
Getting started with the API
Create an API key and make your first read-only request to the SearchOps API.
On this page
The SearchOps API lets you pull your data into your own tools, dashboards or scripts. Version 1 is read-only, so it is a safe way to read your locations, keywords, geo-grid scans (Google Maps, Google Search and AI Mode), Google Business Profile performance, LLM Visibility, reviews, competitors, tasks, reports, Search Console and Google Analytics data programmatically.
What you'll need
- A plan that includes API access. The API is available on Pro and above.
Create an API key
- Go to Developers > API & MCP Credentials in the dashboard. (From Settings, Open API & MCP Credentials takes you to the same page.)
- Enter a name for the key, such as "Reporting script" or "Zapier", and select Create key.
- Copy the key straight away. It starts with
lp_live_and is shown once only, for security.
You can see your keys, when each was last used, and revoke any of them from the same card. Only account owners and admins can create or revoke keys.
Warning: Treat a key like a password. Never commit it to a public repository or put it in client-side code. If one is exposed, revoke it and create a new one.
Make your first request
Send your key as a bearer token in the Authorization header. For example, to list your locations:
curl https://searchops.co/api/v1/locations \
-H "Authorization: Bearer lp_live_your_key_here"
A successful response looks like:
{ "data": [ ... ], "pagination": { "limit": 50, "offset": 0 } }
If you get a 401, the key is missing, wrong, or revoked. A 403 means the key is fine but the plan on the account no longer includes API access. A 429 means you have gone over the rate limit of 120 requests a minute; that limit is counted per key, not per IP address, so calls from a shared host such as Zapier or a CI runner do not eat into each other's budget.
Every request you make, including the ones that fail, is listed under Developers > API Event Logs with its status, latency, and which key was used. That is the fastest way to see what an integration is actually sending.
What you can read (v1)
All endpoints are GET only:
/api/v1/locations(addqto search by name, address or a town the business serves) and/api/v1/locations/{id}/api/v1/locations/{id}/summaryfor every headline in one call/api/v1/locations/{id}/keywords/api/v1/locations/{id}/rankings: deprecated. It reads keyword rank history from the retired Google rank tracker and carriesDeprecationandSunsetheaders. For Google results, use/api/v1/scans/api/v1/locations/{id}/ai-visibility?engine=chatgpt(orengine=gemini)/api/v1/locations/{id}/ai-visibility/insights?engine=chatgpt&days=30: one engine's checks pooled over 7, 30 or 90 days, with each keyword's rate, who it names instead and the sources it cites/api/v1/locations/{id}/chatgpt-visibility: deprecated. It returns the same asai-visibility?engine=chatgptand still answers so existing setups keep working/api/v1/locations/{id}/reviews/api/v1/locations/{id}/competitors: the rivals seen on the geo-grid, Google Search and ChatGPT, with where each was seen and its share of voice/api/v1/locations/{id}/citations: retired. It answers 410 Gone/api/v1/locations/{id}/week: the last 7 days of Business Profile calls, website clicks, directions and views against the week before, beside the tasks finished and this week's plan for the location/api/v1/locations/{id}/profile/performance(addmonthsandgranularity): Business Profile performance over up to 18 months, by month, week or day, with any weekly drops/api/v1/locations/{id}/profile/search-terms: what people searched when Google showed the profile/api/v1/locations/{id}/profile/results: Business Profile results since SearchOps started, against the baseline/api/v1/locations/{id}/posts: Google posts made, scheduled or drafted in SearchOps, and how often the profile posts/api/v1/locations/{id}/geo-grid/insights: why the location wins or loses the Map Pack/api/v1/locations/{id}/keywords/{keywordId}/grid-history(addengine): every scan of one keyword over time, and whether the latest change is a real move/api/v1/locations/{id}/geo-grid/answers?keyword=...and/api/v1/scans/{id}/answers: what a Google Search or AI Mode grid scan found/api/v1/scansand/api/v1/scans/{id}: geo-grid scans on any engine, with the result at every grid point/api/v1/reportsand/api/v1/reports/{id}/api/v1/search-console/sites/api/v1/search-console/sites/{siteId}/search-analyticsfor clicks, impressions, CTR and position by query, page, country, device or date/api/v1/search-console/sites/{siteId}/insightsfor the analysed 30-day picture/api/v1/tasks(filter withlocationIdandstatus) and/api/v1/tasks/{id}: your tasks, read-only, each with the week it is planned for, its steps and how it gets finished/api/v1/analytics/properties,/api/v1/analytics/properties/{propertyId}/reportand/api/v1/locations/{id}/analytics/ai-referrals, once Google Analytics is connected
List endpoints accept limit (up to 100) and offset for paging, and /scans accepts a locationId filter. Search Console data comes live from Google and lags about three days. Business Profile data lags about four days. A missing day or a profile that is not connected comes back as null or a clear error, never as zero. Every key is scoped to your account, so you only ever read your own data.
The full reference, with parameters and example responses for each endpoint, is under Developers > API Documentation. If you would rather generate a client than write the calls by hand, the API is described by an OpenAPI document at /api/v1/openapi.json, which needs no key to read.
Note: Version 1 is read-only. It does not create scans or change data. Write access is planned for a future version.
Next steps
- Want an AI assistant such as Claude to read your data? See Connect the MCP server.
Related articles
Still stuck? Contact our support team and we'll help you out, usually within one UK working day.