ScrapeField
A list of every dentist, café or roofer in a city is the start of most local outreach. This guide builds it in n8n: one search, every page of it, one row per business in a Google Sheet, with the phone, the website and the rating. It uses n8n’s built-in nodes, so there is nothing to install.
The shape of it
Five nodes, in a line:
- Manual Trigger, or a Schedule Trigger to refresh the list each month.
- HTTP Request, which searches Google Maps through us and follows every page.
- Split Out, which turns each page into one item per place.
- Remove Duplicates, on
place_id. - Google Sheets, Append Row.
The HTTP Request node
| Setting | Value |
|---|---|
| Method | GET |
| URL | https://api.scrapefield.com/v1/google-maps/places |
| Authentication | Generic Credential Type → Header Auth, with name Authorization and value Bearer sf_live_… |
| Send Query Parameters | query = dentists in Austin, TX |
Each place is the full listing: name, formatted_address, formatted_phone_number, website, rating, user_ratings_total, business_status and its Google Maps url, named as in Google’s Places API. The search reference has every field.
Following every page
A search answers up to 20 places a page, with a cursor for the next in meta.next_cursor and null on the last. Under the node’s Options → Pagination:
| Setting | Value |
|---|---|
| Pagination Mode | Update a Parameter in Each Request |
| Parameters | Type Query, name cursor, value {{ $response.body.meta.next_cursor }} |
| Pagination Complete When | Other |
| Complete Expression | {{ $response.body.meta.next_cursor === null }} |
| Limit Pages Fetched | On, with a Max Pages you are comfortable paying for |
Each page costs 3 credits, so 10 pages, about 200 places, are 30 credits: between $0.01 and $0.02 depending on your pack. A page that fails costs nothing.
One row per place
Add a Split Out node with data as the field to split out, then a Remove Duplicates node comparing place_id: a business that shows up on two pages, or in two searches, becomes one row. Keep place_id as a column too. It is Google’s own id, and it is what the next run dedupes against.
Into the sheet
The Google Sheets node, Append Row, maps the fields to columns. For outreach, a Filter before it can keep the places that matter: business_status is OPERATIONAL, so closed ones stay out, or website is empty, for businesses that have none. Google Maps lists no emails; the website is where to look for one.
For a whole metro area rather than one search, split it into neighbourhoods or a grid of points, as Google Maps leads for a whole city does, and feed each query to the same node. The workflow is the same for LinkedIn jobs; only the URL and the parameters change.