Tupalo Local Business Leads Scraper (Name, Phone, Address)
Pricing
from $17.00 / 1,000 results
Tupalo Local Business Leads Scraper (Name, Phone, Address)
Scrape local businesses from Tupalo by keyword and city across many countries. Get name, phone, full address, category, website, rating, review count, description and map coordinates. Export to JSON, CSV or Excel.
Pricing
from $17.00 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Tupalo Local Business Leads Scraper (Name, Phone, Address)
Here is one real result, with every field the actor returns:
{"imageUrl": null,"name": "mas Mexikanisches Restaurant & Cocktailbar","category": "Restaurant","phone": "+4314038324","website": "http://www.restaurante-mas.at","street": "Laudongasse 36","city": "Vienna","region": "Vienna","country": "AT","postalCode": "1080","fullAddress": "Laudongasse 36, Vienna, Vienna, 1080, AT","latitude": 48.2131996155,"longitude": 16.3472003937,"rating": 4.3,"reviewCount": 28,"description": "Had brunch there last sunday - very tasty and great choice","openingHours": ["Sunday 10:30-00:00","Monday 18:00-00:00","Tuesday 18:00-00:00","Wednesday 18:00-00:00","Thursday 18:00-00:00","Friday 18:00-02:00","Saturday 18:00-02:00"],"searchQuery": "restaurant","searchCity": "Vienna, Vienna, Austria","listingUrl": "https://www.tupalo.net/en/vienna/mas","spotId": "e56a","source": "Tupalo","observedAt": "2026-07-25T12:34:25.136Z","error": null}
The most complete Tupalo business directory scraper available. It returns every field a Tupalo listing exposes, from phone, website and full postal address to geo coordinates, rating, review count and opening hours, and gives you multi-keyword and multi-city search plus an optional contact-email enrichment add-on to build exactly the lead list you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the Tupalo local business directory for each keyword you pass, in each city you list, paginates through the matching listings, and writes one normalized record per business to the run's dataset. Each record carries the business name, category, phone, website, full postal address, geo coordinates, rating, review count, description and opening hours. Every keyword is searched in every city, so ["restaurant", "dentist"] across ["London", "Berlin"] runs four searches. Missing values are returned as null, and each record carries an observedAt timestamp.
An optional paid contact-enrichment add-on can, for each result without an email, attempt to find a public business contact email and a contact person's name.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 restaurants in London with phone and address.
{"searchQueries": ["restaurant"],"cities": ["London"],"maxBusinesses": 10}
Pass several keywords and cities to run every combination in one job, for example searchQueries: ["restaurant", "cafe"] with cities: ["Vienna", "Berlin"].
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | yes | ["restaurant"] | One or more keywords or business categories, for example restaurant, dentist, coffee. Each keyword is searched in every city you list. |
cities | string[] | yes | ["London"] | One or more city names, for example London, Mexico City, Tokyo. The closest matching city in the directory is used automatically. |
maxBusinesses | integer | no | 10 | Maximum businesses to collect across all keywords and cities. Free Apify plans are capped at 10 per run. |
enrichContacts | boolean | no | false | Optional paid add-on. For each result without an email, attempt to find a public business contact email and a contact person's name. Billed per attempt, plus an extra charge only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap how many results the add-on tries to enrich, to control add-on cost. Free Apify accounts are capped at 3. |
Output reference
One dataset item per business. Types: string, number, integer, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
name | string | Business name. |
category | string | Business category. |
phone | string | Phone number. |
website | string | Website URL. |
street | string | Street address. |
city | string | City. |
region | string | State or region. |
country | string | Country code (ISO 2-letter). |
postalCode | string | Postal code. |
fullAddress | string | Full single-line address. |
latitude | number | Latitude. |
longitude | number | Longitude. |
rating | number | Average rating. |
reviewCount | integer | Number of reviews. |
description | string | Description or top review snippet. |
openingHours | string[] | Opening hours per weekday. |
imageUrl | string | Business photo URL, or null. |
searchQuery | string | Keyword that produced this record. |
searchCity | string | Resolved city searched. |
listingUrl | string | Listing URL. |
spotId | string | Tupalo listing ID. |
source | string | Data source label. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
enrichedEmail | string | Add-on only: public contact email found, or null. |
enrichedContactName | string | Add-on only: contact person's name, or null. |
enrichedJobTitle | string | Add-on only: contact person's job title, or null. |
enrichedEmailStatus | string | Add-on only: verification status of the found email. |
enrichedSource | string | Add-on only: where the email was found. |
enrichedConfidence | number | Add-on only: confidence score for the found email. |
The enriched* fields are populated only when the enrichContacts add-on is enabled.
Example output record
Real record from a live run (input {"searchQueries": ["restaurant"], "cities": ["Vienna"], "maxBusinesses": 10}):
{"imageUrl": null,"name": "mas Mexikanisches Restaurant & Cocktailbar","category": "Restaurant","phone": "+4314038324","website": "http://www.restaurante-mas.at","street": "Laudongasse 36","city": "Vienna","region": "Vienna","country": "AT","postalCode": "1080","fullAddress": "Laudongasse 36, Vienna, Vienna, 1080, AT","latitude": 48.2131996155,"longitude": 16.3472003937,"rating": 4.3,"reviewCount": 28,"description": "Had brunch there last sunday - very tasty and great choice","openingHours": ["Sunday 10:30-00:00", "Monday 18:00-00:00", "Friday 18:00-02:00"],"searchQuery": "restaurant","searchCity": "Vienna, Vienna, Austria","listingUrl": "https://www.tupalo.net/en/vienna/mas","spotId": "e56a","source": "Tupalo","observedAt": "2026-07-25T12:34:25.136Z","error": null}
The openingHours array is trimmed to three of its seven entries here for brevity; the full week is returned in every record. All values are real and unmodified.
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~tupalo-business-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["restaurant","cafe"],"cities":["Vienna"],"maxBusinesses":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~tupalo-business-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["dentist"],"cities":["London","Berlin"],"maxBusinesses":100,"enrichContacts":true}'
Apify CLI:
apify call scrapers_lat/tupalo-business-scraper \--input '{"searchQueries":["restaurant"],"cities":["London"],"maxBusinesses":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per record returned (
resultevent). See the pricing tab for the current per-result price. - Contact enrichment add-on. When
enrichContactsis on, you are billed per enrichment attempt, plus an extra charge only when an email is found. It is off by default. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run, and the enrichment add-on at 3 attempts. Upgrade for higher limits.
FAQ and troubleshooting
A run returned 0 records. Why? The keyword and city combination matched nothing in the directory. Try a broader keyword or a larger city. Zero-result runs are not charged.
How are keywords and cities combined?
Every keyword is searched in every city. Two keywords across two cities is four searches, up to maxBusinesses total.
Does every record include an email?
Base records include phone and website but not email. Enable the enrichContacts add-on to attempt a public contact email and name for results that lack one.
Why are some fields null?
The business did not publish that attribute on Tupalo. Missing values are returned as null, never invented.
Is this an official Tupalo tool? No. This actor is independent and has no affiliation with Tupalo. It reads only publicly available directory data. Use the results in accordance with the source's terms and applicable data-protection law.
Related scrapers
- Google Maps Business Leads Scraper: local business leads with contacts from Google Maps.
- Brownbook Business Directory Scraper: global business listings and contacts.
- Hotfrog Business Directory Scraper: business listings, phones and addresses.
- iGlobal Business Directory Scraper: business leads and contacts.
- Cybo Business Leads Scraper: worldwide business directory leads.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Tupalo. Accesses only publicly available directory data. Use in accordance with the source's terms.
