Businesses Without Websites (OpenStreetMap): Local Leads
Pricing
Pay per event
Businesses Without Websites (OpenStreetMap): Local Leads
Find local businesses without websites using OpenStreetMap open data, or list every business of a chosen type. Returns name, phone, website, email, address, hours, socials and coordinates. Supports 75+ business types and filters, with optional email enrichment.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Detroit Web Agent - Open Data
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Local business leads from OpenStreetMap open data: pick a category and a city (for example dentists in Austin, TX) and get each place's phone, website, email, address, opening hours and social links, or keep only businesses that have no website.
Free sample: download a CSV of real rows from recent runs of this Actor (up to 50 rows, refreshed weekly, no account needed).

Turn "dentists in Austin, TX" into a lead list with phone, website, email, address, opening hours and social links, from OpenStreetMap open data. $3 per 1,000 places. No Google scraping, no proxies, no login.
Built for web designers, SEO and marketing freelancers, local agencies and B2B sales teams who sell to small businesses. Its main job: find local businesses with no website on record, so you can offer them one.
What is Businesses Without Websites (OpenStreetMap): Local Leads?
Find local businesses without websites using OpenStreetMap open data, or list every business of a chosen type. Returns name, phone, website, email, address, hours, socials and coordinates. Supports 75+ business types and filters, with optional email enrichment. Run it from the Apify Console, the API or a schedule, and export the results as JSON, CSV, Excel or HTML.
Features
- No-website filter. Turn on
onlyWithoutWebsiteto get only businesses whose OpenStreetMap entry has no website. That usually means the business has no site, but a mapper may simply not have added it, so check before you pitch. - Contact filters. Keep only places with a website, a phone number or an email. Filtered-out places are not charged.
- Website enrichment (optional). With
enrichFromWebsiteon, the Actor visits each business's homepage and contact page and adds the emails, phone numbers and social links published there. No guessing and no third-party email databases. - Real boundaries. "Austin, TX" means inside the official city boundary, not a rough rectangle.
- Licensed data. Everything comes from OpenStreetMap under the Open Database License (ODbL). Each row carries the attribution in its
sourcefield. - De-duplicated. A business mapped twice (for example as a point and a building) is returned and charged once.
Output
One real row from a recent run of the input above:
{"name": "Castle Dental","category": "dentist","osmCategory": "amenity=dentist","brand": "Castle Dental","phone": "+1-512-458-3600","website": "https://www.castledental.com/dentist-near-me/austin-dentist/35080","email": null,"fullAddress": "1000 East 41st Street, Unit 230, Austin, TX 78751","street": "1000 East 41st Street","unit": "230","city": "Austin","state": "TX","postcode": "78751","openingHours": "Mo 08:00-17:00; We-Fr 08:00-17:00; Sa 07:00-13:00","lat": 30.3000118,"lon": -97.7211043,"googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=30.3000118,-97.7211043","osmType": "node","osmId": 2920762431,"osmUrl": "https://www.openstreetmap.org/node/2920762431","lastEdited": "2023-10-26T18:42:51Z","source": "OpenStreetMap contributors, ODbL 1.0 (https://www.openstreetmap.org/copyright)","searchLocation": "Austin, Travis County, Texas, United States"}
(Some null fields omitted here for space.)
| Field | Description |
|---|---|
name, category, osmCategory | Business name, the type you asked for, and the raw OpenStreetMap tag |
brand, operator | Chain or operating company, when mapped |
phone, website, email | Contact details from the map record |
fullAddress, street, houseNumber, streetName, unit, city, state, postcode, country | Address, whole and split |
openingHours, cuisine, wheelchair, description | Extra details, when mapped |
socials, facebook, instagram, linkedin | Social profile links |
lat, lon, googleMapsUrl, mapUrl | Coordinates and a map link |
osmType, osmId, osmUrl, lastEdited | OpenStreetMap record and its last edit date |
source, searchLocation | ODbL attribution and the resolved search area |
enrichment, websiteEmails, websiteSocials | Added only when Enrich from website is on |
The dataset has two ready views, Business leads and Contacts only. A RUN_SUMMARY record in the key-value store lists places returned, duplicates, filtered-out places, enriched sites and any warnings, such as an unknown business type or a location that could not be found.
Sample output table (real run data)
Rows from a real past run (Apify run ua6hxqaVQXasawRfD, Oct 20, 2026; restaurants in Royal Oak, MI, all 3 rows it returned). Phone numbers are left out here; your dataset includes them when OpenStreetMap has one. A dash in city or state means OpenStreetMap has no value for that place.
| Name | Category | City | State | Website | Source |
|---|---|---|---|---|---|
| Tania's Pizza | restaurant | Royal Oak | - | https://www.taniaspizza.com/ | OSM |
| Penn's Thai Kitchen | restaurant | - | - | https://www.pennsthai.com/ | OSM |
| Noodles & Company | restaurant | Royal Oak | MI | https://locations.noodles.com/mi/royal-oak/420-s-... | OSM |
How to use it
- Click Try for free.
- Enter one or more Business types, e.g.
dentist,plumber,restaurant. - Enter one or more Locations, e.g.
Austin, TX,Travis County, Texasor78701, USA. Or use a bounding box, or a latitude/longitude plus radius. - Set Max places, and turn on the filters or Enrich from website if you need them.
- Click Start, then download the results as CSV, Excel, JSON or HTML, or read them through the API.
Example inputs from real runs
Each input below was used in a real run of this Actor in October 2026. Paste one into the Input tab (JSON view) to start from it.
1. Dentists, plumbers, restaurants with no website, Dearborn MI (that run returned 82 rows)
{"categories": ["dentist","plumber","restaurant"],"locations": ["Dearborn, MI"],"onlyWithoutWebsite": true,"maxItems": 200,"requireWebsite": false,"requirePhone": false,"requireEmail": false,"enrichFromWebsite": false,"radiusKm": 5}
2. Plumbers and dentists without a website, Dearborn and Detroit (that run returned 15 rows)
{"categories": ["plumber","dentist"],"locations": ["Dearborn, MI","Detroit, MI"],"onlyWithoutWebsite": true,"maxItems": 15,"requireWebsite": false,"requirePhone": false,"requireEmail": false,"enrichFromWebsite": false,"radiusKm": 5}
3. Dentists in Austin, TX (that run returned 10 rows)
{"maxItems": 10,"categories": ["dentist"],"locations": ["Austin, TX"],"requireWebsite": false,"onlyWithoutWebsite": false,"requirePhone": false,"requireEmail": false,"enrichFromWebsite": false,"radiusKm": 5}
4. Restaurants in Royal Oak, MI (that run returned 3 rows)
{"categories": ["restaurant"],"locations": ["Royal Oak, MI"],"maxItems": 3,"requireWebsite": false,"onlyWithoutWebsite": false,"requirePhone": false,"requireEmail": false,"enrichFromWebsite": false,"radiusKm": 5}
5. Plumbers without a website in Detroit, MI (that run returned 1 row)
{"categories": ["plumber"],"locations": ["Detroit, MI"],"onlyWithoutWebsite": true,"maxItems": 2,"requireWebsite": false,"requirePhone": false,"requireEmail": false,"enrichFromWebsite": false,"radiusKm": 5}
Input
| Field | Type | Default | What it does |
|---|---|---|---|
categories | array | ["dentist"] | Business types, in plain words or as OpenStreetMap key=value tags |
locations | array | ["Austin, TX"] | City, county, state, ZIP or postal code, neighbourhood, any country |
city, state, country | string | none | Structured location instead of a free-text one |
bbox | string | none | Bounding box for a precise area |
latitude, longitude, radiusKm | string, string, integer | radius 5 | Point plus radius (max 50 km) |
maxItems | integer | 25 | Max places for the whole run (up to 50,000) |
onlyWithoutWebsite | boolean | false | Only places with no website listed |
requireWebsite | boolean | false | Only places with a website |
requirePhone | boolean | false | Only places with a phone number |
requireEmail | boolean | false | Only places with an email |
enrichFromWebsite | boolean | false | Read emails, phones and socials from each business website |
Input from a real run (dentists in Austin, TX):
{"categories": ["dentist"],"locations": ["Austin, TX"],"maxItems": 10,"requireWebsite": false,"onlyWithoutWebsite": false,"requirePhone": false,"requireEmail": false,"enrichFromWebsite": false}
For a no-website call list, this real test input returned 15 listings with no website on OpenStreetMap:
{"categories": ["plumber", "dentist"], "locations": ["Dearborn, MI", "Detroit, MI"], "onlyWithoutWebsite": true, "maxItems": 15}
Synonyms such as attorney, cpa, realtor, mechanic, salon, daycare and coffee shop work too. Anything else: use an OpenStreetMap tag like key=value.
Example
Input example
{"categories": ["dentist"],"locations": ["Austin, TX"],"maxItems": 5}
Sample output
Three real rows from a recent run of this Actor. Personal data is masked, some fields are left out and long values are shortened for readability.
[{"name": "Tania's Pizza","category": "restaurant","phone": "+1 248 288-4774","website": "https://www.taniaspizza.com/","email": null,"fullAddress": "3204 Crooks Road, Royal Oak, 48073, US","city": "Royal Oak","postcode": "48073","openingHours": null},{"name": "Penn's Thai Kitchen","category": "restaurant","phone": "+*********78","website": "https://www.pennsthai.com/","email": null,"fullAddress": null,"city": null,"postcode": null,"openingHours": "Mo-Fr 11:00-21:00; Sa 12:00-21:00; Su 12:00-20:00"},{"name": "Noodles & Company","category": "restaurant","phone": null,"website": "https://locations.noodles.com/mi/royal-oak/420-s--main-street.html","email": null,"fullAddress": "410 South Main Street, Royal Oak, MI","city": "Royal Oak","postcode": null,"openingHours": null}]
Pricing
Pay per event, no monthly fee:
| Event | Price |
|---|---|
| Actor start | $0.00005 per run |
| Place returned | $0.003 per business row ($3 per 1,000) |
| Website enriched (only if you turn it on) | $0.002 per website that loaded |
Duplicates and places removed by your filters are never charged. Unreachable websites are not charged for enrichment.
Worked example: 1,000 restaurants with Enrich from website on, where 700 have a website that loads: 1,000 x $0.003 + 700 x $0.002 = $4.40. Without enrichment: $3.00. Set a maximum charge on the run and the Actor stops cleanly when it is reached. Apify's free plan credit covers a first test.
What does Local Business Leads do?
You give it business types (dentist, plumber, restaurant, lawyer, hair salon and 75+ others) and places (a city, county, state, ZIP code, a map rectangle, or a point plus radius). It returns one row per business with:
- name, category, brand and operator
- phone, website and email, when the business or a mapper has published them
- full address plus street, house number, unit, city, state, postcode, country
- opening hours, cuisine, wheelchair access, description
- Facebook, Instagram, LinkedIn and other social links
- latitude and longitude, a Google Maps link to the coordinates, and the OpenStreetMap ID, URL and last-edited date
When to use this vs the Google Maps Scraper by benthepythondev
Use this actor for lead lists built on OpenStreetMap open data, where you want to spot businesses that list no website. Use the Google Maps Scraper by benthepythondev when you need Google's ratings, review counts and place ids, which its store page lists and OpenStreetMap rows do not have. OpenStreetMap coverage differs by area, so spot-check a city before you buy a large list. Checked against its public store page on Oct 24, 2026.
Use it with AI agents and the API
Add this URL to any MCP client (Claude Desktop, Claude Code, Cursor, VS Code):
https://mcp.apify.com/?actors=transparent_meteorite/local-business-leads
Then ask, for example: "Find dentists in Austin, TX that have no website listed."
Run it and get the rows in one HTTP call:
curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~local-business-leads/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"categories": ["dentist"], "locations": ["Austin, TX"], "maxItems": 2}'
It also works from the Python and JavaScript Apify clients and in Make, Zapier and n8n.
Use cases and n8n automation ideas
Run this actor from an n8n workflow with the Apify node or an HTTP Request node, then read the dataset items in the next step. Ideas:
- No-website outreach. Find local businesses listed in OpenStreetMap with a phone number but no website and send them to a sales list.
- Territory lead lists. Pull one category in one city, such as dentists or plumbers, with address, phone and hours into a spreadsheet.
- Scheduled refresh. Run it weekly from n8n for the same area and append new rows to Google Sheets or a CRM.
Use cases
Web designers and freelancers. Turn on onlyWithoutWebsite and search for the trades near you: dentists, restaurants, hair salons, plumbers, lawyers. Each row gives you the name, phone, fullAddress and opening hours, enough to write a specific first message ("I noticed your shop on Main Street has no website").
SEO and local marketing agencies. Pull every business of one type in a city, then use website, facebook and instagram to see who has a web presence and who only has a social page. The set with a social page and no site is a natural pitch list.
B2B sales to small businesses. Selling payroll, POS, insurance or supplies? List every business of a type inside a county and keep only rows with phone or email. Add enrichFromWebsite to collect emails published on each homepage and contact page.
Franchise and expansion research. Count competitors by type inside an exact boundary. Because "Austin, TX" means the official city limits, counts are not distorted by a rough rectangle. brand and operator separate chains from independents.
Territory planning. Use a latitude and longitude plus radius, or a bounding box, to build a route-ready list around a depot or an office. Each row has lat, lon and a googleMapsUrl.
Example: no-website leads for one city
{"categories": ["dentist", "plumber", "restaurant"],"locations": ["Dearborn, MI"],"onlyWithoutWebsite": true,"maxItems": 200}
Rows with no website are the ones to pitch. Open a few on the map or the business's own social page first, because OpenStreetMap is edited by volunteers and a site may exist but not be mapped.
Cost examples
Straight multiplication of the prices in the Pricing section. The start event is a fraction of a cent per run.
| Job | Places | Without enrichment | With enrichment, if 70% of sites load |
|---|---|---|---|
| First test | 20 | $0.06 | $0.088 |
| One type in one city | 200 | $0.60 | $0.88 |
| Several types in a county | 1,000 | $3.00 | $4.40 |
| State-wide pull | 10,000 | $30.00 | $44.00 |
The 70% figure is only an assumption to show the arithmetic. Enrichment is charged only for websites that actually load.
Tips for a cleaner list
- Search narrower, not wider. "dentist" in a city returns a tidy set, while a broad type over a state returns volume you may not need.
- Use the
Contacts onlydataset view when you only want name, phone, email and website for a mail merge. - Check
lastEdited: a record last edited many years ago can describe a business that has since closed or moved. - Keep the
sourcefield with every row you share or publish, because the ODbL license requires attribution. - A run that returns fewer places than expected usually means thin OpenStreetMap coverage in that area, not a bug. The
RUN_SUMMARYrecord lists warnings such as an unknown business type.
How this differs from scraping Google results
The data comes from OpenStreetMap, an open map database, not from Google. That means no ratings, reviews or photos, but it also means clear licensing, no proxy costs and no blocking. It is strongest for storefronts, restaurants, clinics and dentists in cities, and weaker for home-based trades. Plan to verify before you pitch.
Legal and compliance note
OpenStreetMap data is licensed under the Open Database License. You may use and share it, with attribution and under the same license for the database. Phone numbers and emails are business details published by the business or a mapper; still follow the TCPA for calls and texts, CAN-SPAM and GDPR for email, and keep a suppression list. This is general information, not legal advice.
Related actors
- Website Contact Extractor: emails, phones and social links from a business website.
- Building Permits Leads: city building permits as leads.
- New Business Filings: newly formed LLCs and corporations.
Limitations
- Results depend on OpenStreetMap coverage, which is built by volunteers. It is often good for shops, restaurants, clinics and dentists in big cities, and weaker for home-based trades (plumbers, roofers, cleaners) and small towns, where many entries carry only a name and address.
- No reviews, ratings or photos.
- Up to 50 locations and 50,000 places per run. Max places applies to the whole run; types and locations are processed in the order you enter them.
- The public Overpass servers are shared and sometimes busy. The Actor retries and falls back across several public instances, but a large area can take longer on a busy day.
- Website enrichment reads at most two pages per site, skips private network addresses and does not run JavaScript.
- Geocoding follows the Nominatim usage policy of one request per second.
FAQ
How do I find local businesses that have no website?
Turn on onlyWithoutWebsite. A missing website in OpenStreetMap usually, but not always, means the business has none, so check before outreach. Add requirePhone if you need a callable list.
Are these leads from Google Maps? No. They come from OpenStreetMap open data, so there is no Google scraping and no proxy cost. Some businesses that are on Google Maps are not mapped in OpenStreetMap.
How many leads will I get for a city?
As many as OpenStreetMap has mapped for that type and area, up to maxItems. Run a small test first: 5 places cost about $0.015.
Why did I get fewer results than expected?
Only named businesses mapped in OpenStreetMap are returned. Try a related type (for example builder as well as roofer), a wider area such as the county, or a raw tag like craft=*. The run summary shows how many places your filters removed.
Where do emails come from?
From the OpenStreetMap record (email or contact:email) or, with Enrich from website on, from the business's own homepage and contact page. Placeholder addresses from website builders are filtered out.
Is this legal? The data is published under the Open Database License (ODbL 1.0). You may use it commercially if you credit "OpenStreetMap contributors" and share any database you publish from it under the same terms. Enrichment reads only public pages of the business's own site. Outreach is still subject to your local rules (for example CAN-SPAM, GDPR or TCPA).
How fresh is the data?
Queries run live against the public Overpass API, usually minutes behind OpenStreetMap. Each row has lastEdited.
Does it include reviews or ratings? No. OpenStreetMap has no reviews or ratings. If you need those, use a Google Maps scraper.
This Actor vs santhej/nowebsite-lead-finder: that one reads Google Maps and adds an opportunity score. This one uses OpenStreetMap open data, so it needs no Google access, and adds opening hours, social links and coordinates, with optional email enrichment from each website.
Pairs well with
- Website Contact Extractor: deeper contact-page crawl: roles-tagged emails, E.164 phones, 11 social profiles.
- Google Maps Places Scraper: places, phones, websites and reviews by category and city.
- Company Enrichment by Domain: domain list in, company profile, socials, careers page, emails, MX and tech stack out.
Built and maintained by Detroit Web Agent - Open Data (Detroit, Michigan). Questions, bugs or a field you need: open an issue on this Actor's Issues tab. Data © OpenStreetMap contributors, available under the Open Database License (ODbL).
More from DWA Open Data
Browse all 69 data Actors, with live prices and sample output, at open-data-actors.pages.dev.
Feedback: if this Actor was useful, or if it fell short, an honest review on the Reviews tab helps other users decide. Problems or feature requests: please open an Issue and we usually reply within one business day.
Changelog
- 2026-10-08: Initial release.
- 2026-10-16: Pricing update announced, effective 2026-10-30: Tiered pay-per-event: lower prices on every paid plan, free-plan price never higher than before.
- 2026-10-24: Documentation updated: README refreshed.
- 2026-10-25: Documentation updated: README refreshed.
- 2026-10-25: Listing refresh: new Store icon, README reorganised (overview, data fields, pricing, FAQ) and changelog tab added. No code change.
