Yelp Business Contact Scraper
Pricing
from $0.50 / 1,000 results
Yelp Business Contact Scraper
Scrape verified business contact data from Yelp listings across all categories. Extract company names, phone numbers, emails, websites, addresses, and customer ratings. Perfect for B2B outreach, local lead generation, sales prospecting, and market research. Fast Yelp scraper. Export to CSV, JSON.
Pricing
from $0.50 / 1,000 results
Rating
5.0
(1)
Developer

Țugui Dragoș
Actor stats
2
Bookmarked
21
Total users
4
Monthly active users
7 days ago
Last modified
Categories
Share
Target. Extract. Grow. The world's Yelp data at your fingertips.
Features
- Multi-domain Global Support: Seamlessly scrape from 32 different Yelp country domains.
- Comprehensive Data Extraction: Get every detail including Business name, address, phone, website, ratings, reviews, categories, hours, amenities, and photos.
- Optimized for Lead Generation: Perfect for building B2B datasets, market analysis, and sales prospecting.
- Configurable & Scalable: Control result limits per search term, with automatic pagination handling.
- Robust Error Handling: Graceful recovery from missing data and page load failures.
- Thread-safe Operation: Concurrent crawling with proper state management for high-volume scraping.
- Language-aware Selectors: Optimized selectors for different language versions of Yelp to ensure high accuracy.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| country | string | Yes | United States | The Yelp country domain to scrape from. Select from 32 supported countries. |
| searchTerms | array | Yes | - | List of keywords to search for (e.g., "pizza", "plumber", "cafe"). Multiple terms will be searched sequentially. |
| location | string | Yes | - | The city or area to search in (e.g., "New York", "Berlin", "Tokyo"). |
| maxResults | integer | No | 100 | Maximum number of business listings to scrape per search term. Range: 1-200. |
Example Input
{"country": "United States","searchTerms": ["pizza", "sushi"],"location": "New York","maxResults": 50}
Input for German Yelp
{"country": "Germany","searchTerms": ["restaurant", "cafe"],"location": "Berlin","maxResults": 100}
Input for Japanese Yelp
{"country": "Japan","searchTerms": ["restaurant"],"location": "Tokyo","maxResults": 25}
Output Format
Each scraped business is stored as a JSON object with the following fields:
| Field | Type | Description |
|---|---|---|
| 01_scrapedAt | string | ISO 8601 timestamp of when the data was scraped |
| 02_url | string | Full URL of the business detail page |
| 03_country | string | Country/domain the business was scraped from |
| 04_searchTerm | string | The search term used to find this business |
| 05_searchLocation | string | The location used in the search |
| 06_name | string | Business name |
| 07_rating | string | Star rating (e.g., "4.5 star rating") |
| 08_reviewCount | string | Number of reviews |
| 09_address | string | Full business address |
| 10_phone | string | Phone number |
| 11_website | string | Business website URL |
| 12_priceRange | string | Price range indicator |
| 13_categories | array | List of business categories |
| 14_businessHours | array | Operating hours for each day |
| 15_amenitiesAndMore | array | List of amenities and features |
| 16_photoUrls | array | URLs of business photos (up to 10) |
| 17_reviews | array | Recent reviews with author, rating, date, and text |
Sample Output
{"01_scrapedAt": "2024-01-15T10:30:00.000Z","02_url": "https://www.yelp.com/biz/joes-pizza-new-york","03_country": "United States","04_searchTerm": "pizza","05_searchLocation": "New York","06_name": "Joe's Pizza","07_rating": "4.5 star rating","08_reviewCount": "2,847 reviews","09_address": "7 Carmine St, New York, NY 10014","10_phone": "(212) 366-1182","11_website": "https://www.joespizzanyc.com","12_priceRange": "$","13_categories": ["Pizza", "Italian"],"14_businessHours": ["Mon: 10:00 AM - 4:00 AM","Tue: 10:00 AM - 4:00 AM","Wed: 10:00 AM - 4:00 AM","Thu: 10:00 AM - 4:00 AM","Fri: 10:00 AM - 5:00 AM","Sat: 10:00 AM - 5:00 AM","Sun: 10:00 AM - 4:00 AM"],"15_amenitiesAndMore": ["Casual", "Good for Groups", "Take Out"],"16_photoUrls": ["https://s3-media0.fl.yelpcdn.com/bphoto/example1.jpg","https://s3-media0.fl.yelpcdn.com/bphoto/example2.jpg"],"17_reviews": [{"author": "John D.","rating": "5 star rating","date": "1/10/2024","text": "Best pizza in NYC! The classic slice is perfection."}]}
Supported Yelp Domains
The actor supports the following 32 Yelp country domains:
| Country | Domain |
|---|---|
| 🇦🇷 Argentina | yelp.com.ar |
| 🇦🇺 Australia | yelp.com.au |
| 🇦🇹 Austria | yelp.at |
| 🇧🇪 Belgium | yelp.be |
| 🇧🇷 Brazil | yelp.com.br |
| 🇨🇦 Canada | yelp.ca |
| 🇨🇱 Chile | yelp.cl |
| 🇨🇿 Czech Republic | yelp.cz |
| 🇩🇰 Denmark | yelp.dk |
| 🇫🇮 Finland | yelp.fi |
| 🇫🇷 France | yelp.fr |
| 🇩🇪 Germany | yelp.de |
| 🇭🇰 Hong Kong | yelp.com.hk |
| 🇮🇪 Ireland | yelp.ie |
| 🇮🇹 Italy | yelp.it |
| 🇯🇵 Japan | yelp.co.jp |
| 🇲🇾 Malaysia | yelp.my |
| 🇲🇽 Mexico | yelp.com.mx |
| 🇳🇱 Netherlands | yelp.nl |
| 🇳🇿 New Zealand | yelp.co.nz |
| 🇳🇴 Norway | yelp.no |
| 🇵🇭 Philippines | yelp.com.ph |
| 🇵🇱 Poland | yelp.pl |
| 🇵🇹 Portugal | yelp.pt |
| 🇸🇬 Singapore | yelp.com.sg |
| 🇪🇸 Spain | yelp.es |
| 🇸🇪 Sweden | yelp.se |
| 🇨🇭 Switzerland | yelp.ch |
| 🇹🇼 Taiwan | yelp.com.tw |
| 🇹🇷 Turkey | yelp.com.tr |
| 🇬🇧 United Kingdom | yelp.co.uk |
| 🇺🇸 United States | yelp.com |
Technical Details
Technology Stack
- Runtime: Node.js
- Web Scraping Framework: Crawlee with Playwright
- Browser: Chromium (headless mode)
- Platform: Apify
Architecture
The actor uses a two-phase scraping approach:
- LIST phase: Scrapes search result pages to collect business URLs
- DETAIL phase: Visits each business page to extract comprehensive data
Configuration
- Navigation timeout: 120 seconds
- Request handler timeout: 180 seconds
- Maximum concurrency: 5 parallel requests
- Maximum retries: 3 per request
- Headless browser with anti-detection measures
Anti-Detection Features
- Custom HTTP headers mimicking real browser requests
- Disabled automation detection flags
- Proxy support through Apify proxy configuration
Cost Estimation
The cost depends on the number of businesses scraped and the complexity of the pages:
- Approximate compute units per 100 businesses: 0.5-1.0 CU
- Each search term generates additional requests for pagination
- Detail pages require more resources than list pages
For a typical run scraping 100 businesses with 2 search terms:
- Estimated compute units: 1-2 CU
- Estimated time: 5-15 minutes
Limitations
- Maximum results per search term: 200 (Yelp pagination limit)
- Rate limiting: Yelp may temporarily block requests if too many are made in a short period
- Dynamic content: Some business information may not be available if loaded via JavaScript after initial page load
- Regional availability: Not all businesses have complete information across all fields
- Review limit: Only the first 5 reviews are extracted per business
- Photo limit: Maximum of 10 photos are extracted per business
Error Handling
The actor handles errors gracefully:
- Missing selectors: Falls back to alternative selectors
- Page load failures: Retries up to 3 times
- Missing data: Fields are set to null if not found
- Failed business pages: Error is logged and scraping continues with next business
Usage Tips
- Start with a small maxResults value (10-20) to test your search parameters
- Use specific search terms for better results
- Combine multiple search terms in a single run for efficiency
- Monitor the run logs for any warnings about blocked requests
FAQ / Troubleshooting
Why am I getting fewer results than maxResults?
Yelp often filters search results or limits the total number of available pages for a specific query. If you request 200 results but only get 150, it means Yelp only displayed 150 unique businesses for those search terms. Solution: Try adding more specific search terms or broader location queries.
How can I speed up the scraping?
The actor is configured to use optimal concurrency (up to 5 parallel threads) to balance speed and safety. Tip: Run multiple actor instances with different sets of search terms if you need massive scale.
Is this scraper safe from blocking?
Yes. We use advanced browser fingerprinting and proxy rotation to mimic real human behavior. However, extremely aggressive scraping (thousands of requests per minute) can still trigger temporary blocks. The actor handles this by automatically retrying.
Can I extract business emails?
Yelp does not publicly display email addresses. This actor extracts the business website, which you can then use with a separate email extraction tool or visit manually to find contact details.
Why are some fields null?
Not all businesses provide every piece of information. If a business hasn't listed their price range or amenities, those fields will be returned as null. This is normal behavior and accurate to the source data.
Built with 🩶 for the Apify community 🫡
