What is a local rank tracking API?
It tells you where a business shows up in local search for a given keyword, measured from the spot a customer would actually search. Synup tracks that rank across Google and Google Maps, refreshes it every week, and returns it as plain JSON behind one API key. Here's what the API does, what it gives back, and how to read the numbers.
// Keyword rank, measured from the business location
const headers = {
'Authorization': 'API your_api_key',
'Content-Type': 'application/json'
};
const res = await fetch(
'https://api.synup.com/api/v4/locations/{locationId}/keywords-performance',
{ headers }
);
const { data } = await res.json();
// data.keywordsByLocationId[].sites[].rankings[] ->
// { rank, rankedAt, matchType, matchUrl }
// rank 1 = top of page one, rank 0 = not foundWhere you rank, measured from the map pin
A local rank tracking API is a programmatic way to ask one narrow question: for this keyword, in this place, where does the business show up? It returns a position, not a page. You send a keyword and a location, and you get back a number like 3 or 12 that says where the business sits in the results a searcher would see from that spot.
That makes it different from a general SERP API. A SERP API hands you the whole results page and leaves the parsing to you. A local rank tracking API sits on top of that data but returns the part you actually report on: the rank, the page that ranked, and when it was measured. For a tool polling the same keywords week after week, that smaller payload is the point.
Synup tracks rank for the keywords you add to a location and reports each one for Google and Google Maps. The search runs from the coordinates of the business address, so the rank reflects what a nearby customer sees, not a national average.
How the rank number is calculated
Local results move with the searcher. Two people a few miles apart can type the same keyword and see a different set of businesses, because Google weighs distance and the local profile heavily. A rank that ignores location is close to meaningless, so Synup emulates the search from the business's own coordinates.
The number itself is a flat position. If the business shows up tenth on the first page, the rank is 10. If it shows up fifth on the second page, the rank is 15, because the count carries across pages. A rank of 0 is its own signal: the business wasn't found in that result set at all, which is often more useful to act on than a high number.
Ranks refresh once a week for both Google and Google Maps, and they start counting from the moment a keyword is added. There's no backfill, so the cleanest pattern is to add the keywords you care about early and let the weekly history build. If you need street-level detail rather than a single reading from the storefront, that's what the grid does, covered below.
What the API gives back
The shape is small on purpose. A keyword has an id and a name. Its performance comes back as a list of sites, and each site carries a rankings array. Each entry has:
Because each keyword reports per site, one response lets you compare the same term on Google against Google Maps, which is where a lot of local visibility actually lives. Two more views sit alongside the per-keyword call: a rollup that averages performance across a location's keywords, and a distribution that buckets ranks over time, so you can chart how many keywords hold the top three, the top ten, and beyond.
A keyword-performance response
{
"data": {
"keywordsByLocationId": [
{
"id": "S2V5d29yZDoxODQ1OTY4",
"name": "pizza restaurant near me",
"sites": [
{
"name": "Google",
"rankings": [
{ "rank": 7, "rankedAt": "2026-06-01T03:28:57", "matchType": "location_url" }
]
},
{
"name": "Google Maps",
"rankings": [
{ "rank": 3, "rankedAt": "2026-06-01T03:28:57", "matchType": "location_url" }
]
}
]
}
]
}
}The rankings endpoints
Keyword tracking and grid reports for a location. The full reference lives in the docs.
One reading from the storefront tells you less than a grid
A single rank from the business address answers one question well and hides another. You know where you stand at the front door, but not how fast that visibility drops two neighborhoods over. The grid fills that in.
A grid report runs your keywords across a lattice of points around the location and returns a rank at each one. You set the spread with a radius from 5 to 60 miles and a grid size of 3x3, 5x5, or 7x7, and you can add up to 25 keywords per report. Each point comes back color-coded so the heatmap reads at a glance: green for ranks 1 to 5, orange for 6 to 20, and red for 21 and beyond.
The report also rolls the points up into three numbers worth tracking over time: the share of points in the top 3, the share in the top 10, and the average rank across the whole grid. You create a report with one call and fetch it back by id once it's ready.
See the Local Rank Grid referenceTracking rank as it moves
Rank only means something as a trend. One reading tells you where you are. A run of them tells you whether the work is paying off. Since Synup records rank weekly with a rankedAt stamp on every reading, the storage pattern is simple: keep each week's rank per keyword per site, and compute the delta against the prior reading.
A couple of things are worth persisting beyond the raw rank. Keep the matchUrl so you can catch when a different page starts ranking for a term. Keep the grid rollups so you can watch the top-3 and top-10 share shift across a market rather than reacting to a single point. A rank that flips to 0 deserves an alert on its own, since it usually means the business fell out of the result set rather than slipping a few spots.
Because history starts when a keyword is added and can't be recovered for earlier dates, the practical move is to add keywords for a location before you need the data, not when a client asks for a report.
Authentication and rate limits
Auth is one header. Generate an API key in Settings, then send it on every request as Authorization: API your_api_key alongside Content-Type: application/json. There's no OAuth dance for the API itself. OAuth only comes up when you connect a Google or Facebook profile to an account. Here's how to find and generate your key.
The general rate limit is 75 requests per minute, and it can be raised for a specific use case. API access is included in every Synup plan, so there's no separate metering on rank calls. If you're running grid reports across a large account, space the create calls and fetch results by id rather than firing everything at once.
Planning rank tracking across many locations
Most rank tracking APIs price by the scan, so cost modeling turns into credit math. Synup doesn't work that way. Rank tracking is part of the plan, ranks refresh weekly on their own, and grid reports are created on demand. That changes what you plan for.
What you're really budgeting is keywords and grid density, not dollars per call. A location with 15 tracked keywords produces 15 weekly readings per site. A 7x7 grid is 49 points per keyword per report, so a report covering 10 keywords resolves 490 points. The denser the grid and the more often you regenerate it, the more there is to store and chart, and that's the real constraint at the scale agencies and franchises run.
A sensible default: track the keywords that map to revenue at every location and let the weekly cadence build history, then reserve denser grids for the markets where local rank is competitive enough to be worth the street-level view.
Local Rank Tracking API FAQs
Common questions on coverage, granularity, and how rank tracking differs from profile analytics. The developer docs cover every endpoint in full.
Which search engines does Synup track rank for?
Google and Google Maps. Each tracked keyword reports a rank for both, measured weekly from the coordinates of the business location.
How is this different from Google Business Profile rank tracking?
Profile analytics tell you how a Google listing performs once people find it, like views, clicks, and calls. Rank tracking tells you where the business places in the result set for a keyword, by location, before any of that happens.
Can I track rank outside the United States?
Yes. Synup supports locations across many countries, and rank is always run from each location's own coordinates, so the reading is local wherever the business sits.
How granular can the location targeting get?
Two levels. A single weekly reading from the business address, or a grid report from 5 to 60 miles at a 3x3, 5x5, or 7x7 resolution when you want street-level variance.
Is rank tracking metered or charged per scan?
No. API access is included in all Synup plans with no per-scan credits. The general limit is 75 requests per minute, and we can raise it for your use case.
Track local rank through the API
Request an API key and we'll provision a sandbox, so you can pull keyword rank and grid reports against live data before any sales call.