Skip to content
All posts

How to build a local lead list without code

No-code tools6 min read
How to build a local lead list without code: the post's first code sample

You want a list of every dentist, plumber or café in a city, with phone numbers and websites, in a spreadsheet. You do not want to write a script. The Local businesses tool in the scrape.land dashboard builds that local lead list from a form: pick a type of business, type a city, choose your filters, and download the result as a CSV.

Where to find it

Sign in, open Tools in the dashboard and choose Local businesses. The first time you open Tools it asks for a key under Your Tools key: click Create a key for Tools, or paste a key you already have and click Use this key. Tools call the API from your browser with that key, and it is kept in that browser only.

Every run uses request units from your plan, exactly like the API does. There is no separate tool subscription.

Pick a type of business and a city

The form has one row:

Click Search (or press Enter in the city field). While it runs you see a status such as "Finding restaurants in Porto, Portugal…". The first search of an area takes a few seconds; repeating it is instant because results are cached.

The map and the table

Results appear on a map with one dot per business. The legend in the corner explains the two colours: has a website and no website. That alone is useful if you sell websites: the dots in the second colour are your list.

Click a dot for a card with the address, phone, website, email and opening hours when they are listed, plus a View on OpenStreetMap link. If the business only lists a social or booking page, that page is shown in place of a website. The business is still counted as having no website, because a Facebook page is not a site they own.

Below the map is a table with Name, Address, Website, Phone and Email, 25 rows per page. Click a row and the map flies to that business and opens its card. The map always shows every result, not just the current page of the table.

Above the table, a status line tells you how many businesses matched. On a paid plan it gives the number of businesses shown, the number that matched and the units the search used. A search for restaurants in Porto with No website and Has a phone matched 116 businesses when we ran it.

Free plan preview vs paid plans

On the Free plan each search returns a preview: the first 10 matches. The status line says so, for example "Free plan preview: the first 10 of 116. Every paid plan returns up to 200 per search." Every paid plan, including the $19 Pool plan, returns up to 200 rows per search. If a city has more matches than that, narrow it with a filter or search neighbouring cities one at a time.

What a search costs

A search costs 1 request unit per 10 rows returned, and at least 1. A search that returns 200 rows costs 20 units; one that returns 7 rows costs 1. A search refused because the map data service was busy is not billed.

At the top of the tool, the Recent searches panel shows Spent today, a running total of the units Tools used today in this browser, so you can keep an eye on it without opening the Usage page.

Find emails on their websites

Map data often has a website but no email. The Find emails on their websites button fixes that: it visits the website of every result that has one and no email yet (up to 50 per click) and reads the email addresses published there. If the homepage lacks an email or a phone number, it also reads one contact or about page on the same site. The status line then says how many websites gave up an email.

Reading a site costs 1 request unit per page fetched, so 1 or 2 units per website. For a single business you can use the Find email button on its map card instead. If a site publishes no email, you get a short note saying so.

Only addresses a business publishes on its own site are collected. Nothing is guessed from a name pattern.

Download the CSV

Click Download CSV to save the results as scrape-land-local-businesses.csv. The columns are name, category, address, city, website, profile, phone, emails, opening_hours, lat, lon and osm_url. The profile column holds the social or booking page for businesses that have one instead of a website, and emails includes anything the email lookup found, separated by semicolons. The file opens cleanly in Excel and Google Sheets.

Recent searches

Every search is saved under Recent searches, newest first, with its filters, the number of rows, what it cost and when you ran it. Click one to bring its map and table back without running it again. They are stored in your browser, so they survive a refresh but do not follow you to another computer. Download the CSV if you want to keep a list.

Use it responsibly

The data comes from OpenStreetMap, © OpenStreetMap contributors, under the ODbL; keep that credit with the data if you share it. These are public business details, but a sole trader's phone number or email can still count as personal data, so follow the rules where you and they are (GDPR and ePrivacy in the EU, for example) and honour every opt-out.

Next steps

If you do write a little code, the same search is one call to POST /v1/places: see how to find local businesses without a website. For contact details from a list of company sites, read how to find emails on company websites without code. Plans and unit prices are on the pricing page, and every parameter is in the docs.

Start free with 1,000 requests Read the docs