Local Business Email & Contact Scraper — No API Key
Pricing
from $2.00 / 1,000 business returneds
Local Business Email & Contact Scraper — No API Key
Local business lead generation in any city: emails, phones, addresses and websites across 32 categories. Email finder for restaurants, hotels, clinics.
Pricing
from $2.00 / 1,000 business returneds
Rating
0.0
(0)
Developer
Diseño Web de Colombia
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Local business data with the one field everybody actually wants: the email address.
What is the Local Business Scraper?
This Actor pulls local businesses in any city from OpenStreetMap — name, address, phone, opening hours, website, coordinates and category — and then goes one step further: it crawls each business's own website to find contact emails and social profiles.
No Google API key, no billing account, no quota. OpenStreetMap data is ODbL-licensed, which means you are allowed to redistribute what you extract.
The email crawl is the difference
Raw OpenStreetMap data is good at some fields and terrible at others. Measured across 600 real points of interest in Miami:
| Field | Coverage in raw OSM |
|---|---|
| name | 96% |
| street address | 77% |
| phone | 44% |
| website | 43% |
| 1% |
Email is the field people buy, and it is the one OSM barely has. So this Actor takes the 43% that do have a website and crawls it for contact details. On a real Miami Beach run that took the count from 5 businesses with an email to 70.
No other OpenStreetMap Actor on the Store does this. There is also failover across Overpass mirrors, because a single mirror returning a 504 — or worse, a 200 with zero results — is common enough to ruin a run.
What you can use it for
One Actor, 32 business categories. Pick any combination in the categories
field — every value below is a real OpenStreetMap category, verified against a
live query, not a promise.
| What you want | categories value |
|---|---|
| Restaurant, cafe and bar lead lists | restaurant, cafe, bar, fast_food |
| Hotel and hospitality directory | hotel |
| Dentist, doctor and clinic leads | dentist, doctor, veterinary |
| Pharmacy and optician outreach | pharmacy, optician |
| Real estate agency contacts | real_estate |
| Lawyer, accountant and insurance leads | lawyer, accountant, insurance |
| Car dealers and repair shops | car_dealer, car_repair |
| EV charging station locations | ev_charging |
| Gym, salon and beauty prospects | gym, beauty |
| Grocery, bakery and butcher lists | supermarket, bakery, butcher |
| Retail and clothing stores | clothing, florist, hardware |
| Travel agencies and laundries | travel_agency, laundry |
| Schools, childcare and banks | school, childcare, bank |
| Everything with a storefront | any_shop |
| Every office-based business | any_office |
Typical jobs people run it for: building a B2B lead list for a city, compiling a local business directory, replacing a Yellow Pages export, enriching a prospect list with emails and phone numbers, or mapping store locations with coordinates.
What data you get
Business name, category, full address, phone, website, opening hours, latitude and longitude, plus the emails and social profiles crawled from the business site. Every row is keyed by its OpenStreetMap ID.
Input
Every field is optional unless marked required.
| Field | Type | Description |
|---|---|---|
location | string | Just type it: Miami Beach, Barcelona, Manchester, Bogotá. The actor turns it into map coordinates for you. |
categories | array | What to look for. Pick as many as you need. |
enrichContacts | boolean | Visits each business website and pulls the email and social profiles. This is the whole point: the map data itself has emails for barely 1% of businesses. |
requireWebsite | boolean | Recommended for lead generation — a business with no website cannot be enriched with an email. |
requirePhone | boolean | Drops entries without a phone number. |
boundingBox | string | Overrides the city name. Format: south,west,north,east — for example 25.76,-80.20,25.79,-80.17 |
maxResults | integer | You are charged per business returned. |
proxyConfiguration | object | Optional. The map data needs no proxy at all. A proxy only helps when crawling business websites that block datacenter IPs. |
Input sample
{"location": "Miami Beach","categories": ["restaurant","cafe"]}
Output sample
One real row from an actual run:
{"id": "osm:node:631761812","osmId": "631761812","osmType": "node","name": "TGI Fridays","category": "restaurant","lat": 25.7748183,"lon": -80.1320417,"address": "500 Ocean Drive Miami Beach","street": "Ocean Drive","houseNumber": "500","city": "Miami Beach","postcode": "33139","country": null,"phone": "+1 305-673-8443","website": "https://locations.tgifridays.com/fl/miami-beach/500-ocean-dr.html","email": "contact@meetsoci.com","openingHours": null,"brand": "TGI Fridays","cuisine": "american","enrichedEmails": ["contact@meetsoci.com"],"facebook": "https://www.facebook.com/TGIFridays","instagram": "https://www.instagram.com/tgifridays","linkedin": null,"twitter": "https://twitter.com/TGIFridays","enriched": true,"osmUrl": "https://www.openstreetmap.org/node/631761812"}
Who uses this
- Local lead generation — restaurants, gyms, salons, clinics, with contact details
- Agencies — build a prospect list for a city without paying per lookup
- Delivery and logistics — coordinates and opening hours for route planning
- Market researchers — density and category mix by neighbourhood
- Anyone who needs Google Maps data but not the Google bill
Honest limits
These are real and none of them is fixable by any tool. They are here so you know what you are buying before you run it.
- Coverage is what OpenStreetMap has, and it varies a lot by city. Well-mapped European cities are richer than sparse suburbs. The percentages above are typical, not guaranteed.
- The email crawl stops after two minutes so runs always finish inside Apify's checks. On a dense area you may get emails for most sites but not all, and the log tells you exactly how many were crawled.
- Emails are whatever the business publishes. No pattern-guessing. Expect info@ and contact@, not named staff.
- Contact coverage varies a lot by category. Measured in Madrid: car dealers\n came back with 153 names, 31 websites and 22 phones out of 158 — usable. EV\n charging stations gave 121 results but only 29 names, 4 websites and zero\n phones: that category is location data, not contact data.\n- Expect 6% to 27% of businesses to come back with an email, measured across Miami Beach, Lisbon and Bogota. The spread is not the crawler — it is how many businesses your city has mapped with a website. Test your city first.
- Some businesses have no website, and those cannot be enriched at all.
- An empty area is a valid answer. The Actor warns and finishes successfully rather than failing.
FAQ
Why OpenStreetMap instead of Google Maps?
Three reasons: no API key or billing account, no quota, and the data is ODbL-licensed so you may redistribute it. Google's terms do not allow that. The trade-off is coverage, which is honestly documented above.
Do I need a Google API key?
No. Nothing here touches Google at all.
How do you find emails when OpenStreetMap does not have them?
By visiting the business's own website and reading its contact pages.
Measured across three cities, same category (restaurant, cafe):
| City | Businesses | With a website | With an email | Hit rate |
|---|---|---|---|---|
| Miami Beach | 147 | 74 | 39 | 27% of all · 53% of those with a site |
| Lisbon | 107 | 17 | 8 | 7% of all · 47% of those with a site |
| Bogota | 132 | 13 | 8 | 6% of all · 62% of those with a site |
The crawler itself is consistent: it finds an email on roughly half the sites it visits, anywhere. What swings the end result is how many businesses have a website listed in OpenStreetMap at all — 50% in Miami Beach, 16% in Lisbon, 10% in Bogota. Run a small test on your city before committing to a big job.
Can I search a custom area instead of a city?
Yes, pass a bounding box. Otherwise give a city or district name and it is geocoded for you.
What categories can I search?
Any OpenStreetMap amenity or shop value — restaurant, cafe, bar, pharmacy, dentist, hotel, gym and hundreds more. Pass several at once.
Why did some businesses come back without a phone?
Because OpenStreetMap does not have one for them; measured coverage is about 44%. Use requirePhone to drop those rows if you only want complete records.
Do I need an account or an API key for the source?
No. This Actor only reads public pages and public endpoints, the same ones any logged-out visitor sees. You never give it credentials, and nothing is done on your behalf.
Is it legal to scrape this data?
Scraping publicly available information is broadly accepted as legal, and this Actor only ever touches pages that require no login. That said, what you may do with the data afterwards is a separate question — personal data in particular is regulated by GDPR and CCPA. If you plan to process personal data, take advice first. Apify has a good primer: Is web scraping legal?
How much will a run cost me?
You are charged per result, so the cost scales with what you actually get back. The pricing is shown on this page above the input form. Start with a small run to see real numbers before you scale up.
Can I export to Excel, CSV or Google Sheets?
Yes. Every run's dataset can be downloaded as CSV, Excel, JSON, XML or HTML from the Storage tab, and Apify integrates directly with Google Sheets, Airtable, Zapier, Make and Slack.
Can I run this on a schedule?
Yes. Open the Schedules tab and pick an interval — hourly, daily, weekly. Each run only costs you what it returns.
Can I call it from my own code instead of the console?
Yes. Every Actor on Apify is also an API endpoint. There are official clients for Python and JavaScript, plus a plain REST API. The API tab on this page shows ready-made snippets with your input already filled in.
Something came back empty. Is it broken?
Usually not. An empty result normally means the filters were too narrow, or the source genuinely has nothing to return for that query. This Actor is written to finish successfully and tell you what happened rather than fail — check the run log, it says which step returned nothing.
Related Actors
- Company Data Scraper — the same email crawling, but for a list of company domains instead of a city. Use that one when you already know the companies; use this one when you only know the place.
- Company Signals — track competitors by domain
Where the data comes from
The Overpass API over OpenStreetMap data (ODbL licensed), Nominatim for geocoding, and each business's own public website for contact details.