SEO Local pack API
Get the Google local pack for a keyword in a city: the short list of businesses Google shows in the map box on its normal search results page, in pack order, with rating, review count, address, category, opening hours, phone, website, booking link, and Google listing ids. Sponsored listings are left out. For the full Google Maps results list, use maps.search.
$1.50/1k req, pay per request, no subscription.
{"position":ย 1,"name":ย "Ember & Bean Coffee Roasters","rankGroup":ย 1,"rankAbsolute":ย 1,"rating":ย 4.8,"reviewsCount":ย 612,"description":ย "1204 S Congress Ave\nOpen until 6 PM\n\"Best cortado on South Congress.\"","phone":ย "(512) 555-0143",... 11 more fields}
Pricing and providers
SEO Local pack API pricing: one API, 2 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
Try it
Get SEO local pack in one request
This sample shows 14 of 23 fields. See every field
{
"found": true,
"data": {
"places": [
{
"position": 1,
"name": "Ember & Bean Coffee Roasters",
"rankGroup": 1,
"rankAbsolute": 1,
"rating": 4.8,
"reviewsCount": 612,
"description": "1204 S Congress Ave\nOpen until 6 PM\n\"Best cortado on South Congress.\"",
"phone": "(512) 555-0143",
"url": "https://www.emberandbeancoffee.com/",
"domain": "emberandbeancoffee.com",
"cid": "4821937465012938471"
},
{
"position": 2,
"name": "Radiant Grind Coffee Bar",
"rankGroup": 2,
"rankAbsolute": 2,
"rating": 4.6,
"reviewsCount": 388,
"description": "800 W 6th St\nOpen until 9 PM",
"phone": "(512) 555-0187",
"url": "https://www.radiantgrind.com/",
"domain": "radiantgrind.com",
"cid": "11930284756102938475"
},
{
"position": 3,
"name": "Lowland Coffee Collective",
"rankGroup": 3,
"rankAbsolute": 3,
"rating": 4.5,
"reviewsCount": 241,
"description": "2100 Manor Rd\nCloses soon\n\"Quiet spot to work with great pastries.\"",
"url": "https://www.lowlandcoffee.co/",
"domain": "lowlandcoffee.co",
"cid": "7392018465720193846"
}
]
}
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
One request, one response shape.
Every field you send and every field you get back, each with a real example.
Last verified 2026-10-31 ยท uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- keywordstring
coffee shop
Search keyword, for example coffee shop or plumber.
- locationstring
Austin,Texas,United States
Location to search from, formatted like City,Region,Country; for example, New York,New York,United States.
- languagestring
en
Language code for the search results.
- limitinteger
Maximum number of local pack businesses to return. Google usually shows three. Billing is flat per request.
- requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `address` or `cid`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a business that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
Response
JSON, one example value per field.
Businesses in the Google local pack, in the order Google shows them. Populated whenever the provider has data for the entity.
- addressstringcan require
The address line Google shows for the business in the pack. For a business that serves an area rather than a storefront, Google shows years in business and the city here instead.
- bookingUrlstringcan require
Booking link Google shows for the business, when it has one. The query string carries the booking session, so it is kept.
- categorystringcan require
Business category Google shows, such as Coffee shop or Plumber.
- cidstringcan require
4821937465012938471
Google customer id (CID) of the business listing.
- descriptionstringcan require
1204 S Congress Ave Open until 6 PM "Best cortado on South Congress."
The text Google prints under the business name in the pack. Usually it is every line: the street address or years in business, opening hours, and a review quote. On some responses it is only the review quote, with the address and hours in their own fields.
- directionsUrlstringcan require
Google Maps directions link to the business, with tracking query parameters removed.
- domainstring
emberandbeancoffee.com
Host name of the business website, such as www.example.com.
- hoursstringcan require
Opening hours text Google shows, such as Open 24 hours or Closed - Opens 7 AM.
- imagestringcan require
Thumbnail photo URL Google shows for the business.
- knowledgeGraphIdstringcan require
Google Knowledge Graph id of the business, such as /g/11vb1r7rlr.
- namestring
Ember & Bean Coffee Roasters
Business name. Populated whenever the provider has data for the entity.
- phonestring
(512) 555-0143
Business phone number, when Google shows one, as Google prints it: national format such as (512) 890-2933 or international format such as +1 512-890-2933.
- positioninteger
1
One-based position of the business in the local pack, counting only unpaid listings. Populated whenever the provider has data for the entity.
- priceLevelstringcan require
Price range Google shows for the business, such as $10-20.
- rankAbsoluteinteger
1
Position of the business among every element of the Google results page, counting from the top.
- rankGroupintegercan require
1
Position Google gives the business inside the local pack, counting sponsored listings, so it can be higher than position when an ad sits above it.
- ratingnumber
4.8
Average Google star rating out of 5. Populated whenever the provider has data for the entity.
- reviewsCountinteger
612
Number of Google reviews behind the rating. Populated whenever the provider has data for the entity.
- urlstring
https://www.emberandbeancoffee.com/
Business website URL, when listed, with tracking query parameters removed.
- foundboolean
true
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
FAQ
About the SEO Local pack API
The AnyAPI SEO Local pack API returns SEO local pack data as normalized JSON from one POST call to /v1/run/seo.local_pack. Get the Google local pack for a keyword in a city: the short list of businesses Google shows in the map box on its normal search results page, in pack order, with rating, review count, address, category, opening hours, phone, website, booking link, and Google listing ids. Sponsored listings are left out. For the full Google Maps results list, use maps.search. AnyAPI routes each request across 2 sources and falls back automatically when one fails. It costs from $1.50 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 95.3% of SEO local pack calls through AnyAPI succeeded, with a median response time of 8.9 seconds across 107 measured calls.