Why a Places search returns 60 businesses and never more
You ask Google for 200 dentists in a city. You get 20. You loop the pagination, feel clever, and land on exactly 60 — then the token disappears and the results stop. That is not a bug in your loop: 60 is the documented ceiling of Text Search (New). Here is how the pagination actually works, what each extra page costs, and the four mistakes that quietly leave you stuck on page one.
The number nobody reads in the docs
The Text Search (New) reference says it plainly: a search returns a maximum of 60 results across all
pages, and Google adds that the limit is subject to change. Twenty per page, three pages. There is no
parameter that buys you the fourth page — pageSize only moves the page size, never the ceiling.
That single sentence destroys a lot of business plans built on “scrape every plumber in the country in one run”. It also explains a support question we get regularly: “the workflow found 60 leads and stopped — is it broken?” No. It did exactly what the API allows.
The three fields that do all the work
| Field | Where it goes | What it really does |
|---|---|---|
pageSize | request body | 1 to 20 results per page. Absent or 0 → 20. Above 20 → still 20. |
nextPageToken | response body | Present only when there are more results. Absent on the last page — that is your stop signal. |
pageToken | request body (next call) | The nextPageToken you received, echoed back to fetch the following page. |
Two details get lost in most tutorials. First, maxResultCount is deprecated: it was
replaced by pageSize, and if you send both, pageSize wins and the old field is
ignored. Second, nextPageToken must be in your field mask. It belongs to the
IDs-only (Essentials) tier, so including it costs nothing extra — but if you forget it, the response has no
token, your loop thinks page one was the last page, and you silently collect 20 results instead of 60.
That failure looks like “the query is bad”, which is why people debug the wrong thing for an hour.
How our workflow pages — the configuration, verbatim
The workflow in the kit does not use a Code node loop. It uses the HTTP Request node's own pagination, which is easier to audit and survives node updates better:
| Setting | Value | Why |
|---|---|---|
| Pagination mode | updateAParameterInEachRequest | The token lives in the JSON body, not in the URL: this mode edits the body between requests. |
| Parameter | pageToken = {{ $response.body.nextPageToken }} | Takes the token from the previous response — never from your own counter. |
| Stop condition | {{ !$response.body.nextPageToken }} | Stops when the API says there is nothing left, not after a fixed number. |
| Max requests | 3 | A hard cap so a misbehaving token can never turn into a runaway bill. |
| Interval | 2000 ms | Two seconds between pages: cheap insurance against rate-limit rejections. |
Both conditions matter, and they do different jobs. The stop condition is the correct reason to stop; the request cap is the safe reason to stop. Keep both and you never pay for a page the API did not intend to give you.
What each page costs, with the arithmetic visible
Billing in Places API (New) is per request, at the highest SKU present in that request's field mask. A paginated call is not one request with three pages: it is three requests, each carrying its own mask, so the bill multiplies with the pages in a way that is easy to forget.
| Run | Requests | Businesses | Cost at the Enterprise SKU (USD 35 / 1,000) |
|---|---|---|---|
| 1 page | 1 | 20 | USD 0.035 |
| 2 pages | 2 | 40 | USD 0.070 |
| 3 pages (the kit's cap) | 3 | 60 | USD 0.105 |
| 1,000 businesses | 50 | 1,000 | USD 1.75 |
Notice the shape of the last row: a thousand leads is fifty requests, not one. If you are inside the monthly free allowance for that SKU, the same thousand leads cost zero — which is why “how many requests per run” and “how many runs per month” are the two numbers that decide your bill, and why a cap of three pages is a pricing decision as much as an engineering one.
So how do you get more than 60?
Not with a bigger page. Split the question:
- By area. Run the same niche once per district or town instead of once for the whole region. The ceiling is per search, so ten districts are ten ceilings.
- By niche wording.
dental clinic,dentistandorthodontistare three different searches that overlap — which is fine, because the next point removes the overlap. - With deduplication by
placeId. This is the part that makes the strategy safe: dedupe before you spend money on AI, and a business that appeared in yesterday's run does not cost twice.
Our own workflow learned the honest version of this: its dedupe node remembers up to 5,000
placeIds across executions, so a second run over the same query legitimately returns zero
new rows. That is not a bug either — it is the feature doing its job, and it is reset with
Clear Deduplication History when you actually want to see the same businesses again.
Four mistakes that stop you at page one
| Mistake | What you see | Fix |
|---|---|---|
pageSize: 50 | 20 results, no error | 20 is the maximum per page; use pagination, not a bigger page. |
No nextPageToken in the mask | 20 results, no token, loop ends | Add it to the field mask — it is IDs-only, so it does not raise the SKU. |
| No request cap | A bill you did not plan | Cap the pages (3 in the kit) and keep the token-based stop condition. |
| No interval | 429s halfway through | 1-2 s between pages; retry with backoff, never in a tight loop. |
What this means if you are buying a template
Ask the seller two questions: “how many pages, and what stops the loop?” A template that paginates without a cap is a template that can spend your budget without asking. One that stops only at a fixed count will happily pay for an empty page. The answer you want mentions both a token-based stop condition and a hard cap.
Ours is published in full — the field mask, the SKU table, the page cap and the measured token cost per lead — in the cost document that ships inside the kit. If you would rather check the arithmetic before buying than after, that document is the long version of this article.
The kit these articles come from
Two n8n workflows, an MCP server, six documents in English and Spanish, a validator and a self-test. USD 49 one time, on the n8n instance you already have.
See pricing