Yelp Business Contact Scraper avatar
Yelp Business Contact Scraper
Under maintenance

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Yelp Business Contact Scraper

Yelp Business Contact Scraper

Under maintenance

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ș

Țugui Dragoș

Maintained by Community

Actor stats

2

Bookmarked

20

Total users

5

Monthly active users

6 days ago

Last modified

Share

Features

  • Multi-domain support: Scrape from 32 different Yelp country domains
  • Comprehensive data extraction: Business name, address, phone, website, ratings, reviews, categories, hours, amenities, and photos
  • Configurable result limits: Control how many businesses to scrape per search term
  • Automatic pagination: Handles multiple pages of search results
  • Robust error handling: Graceful handling of missing data and page load failures
  • Thread-safe operation: Concurrent crawling with proper state management
  • Language-aware selectors: Optimized selectors for different language versions of Yelp

Input Parameters

ParameterTypeRequiredDefaultDescription
countrystringYesUnited StatesThe Yelp country domain to scrape from. Select from 32 supported countries.
searchTermsarrayYes-List of keywords to search for (e.g., "pizza", "plumber", "cafe"). Multiple terms will be searched sequentially.
locationstringYes-The city or area to search in (e.g., "New York", "Berlin", "Tokyo").
maxResultsintegerNo100Maximum 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:

FieldTypeDescription
01_scrapedAtstringISO 8601 timestamp of when the data was scraped
02_urlstringFull URL of the business detail page
03_countrystringCountry/domain the business was scraped from
04_searchTermstringThe search term used to find this business
05_searchLocationstringThe location used in the search
06_namestringBusiness name
07_ratingstringStar rating (e.g., "4.5 star rating")
08_reviewCountstringNumber of reviews
09_addressstringFull business address
10_phonestringPhone number
11_websitestringBusiness website URL
12_priceRangestringPrice range indicator
13_categoriesarrayList of business categories
14_businessHoursarrayOperating hours for each day
15_amenitiesAndMorearrayList of amenities and features
16_photoUrlsarrayURLs of business photos (up to 10)
17_reviewsarrayRecent 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:

CountryDomain
Argentinayelp.com.ar
Australiayelp.com.au
Austriayelp.at
Belgiumyelp.be
Brazilyelp.com.br
Canadayelp.ca
Chileyelp.cl
Czech Republicyelp.cz
Denmarkyelp.dk
Finlandyelp.fi
Franceyelp.fr
Germanyyelp.de
Hong Kongyelp.com.hk
Irelandyelp.ie
Italyyelp.it
Japanyelp.co.jp
Malaysiayelp.my
Mexicoyelp.com.mx
Netherlandsyelp.nl
New Zealandyelp.co.nz
Norwayyelp.no
Philippinesyelp.com.ph
Polandyelp.pl
Portugalyelp.pt
Singaporeyelp.com.sg
Spainyelp.es
Swedenyelp.se
Switzerlandyelp.ch
Taiwanyelp.com.tw
Turkeyyelp.com.tr
United Kingdomyelp.co.uk
United Statesyelp.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:

  1. LIST phase: Scrapes search result pages to collect business URLs
  2. 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

  1. Maximum results per search term: 200 (Yelp pagination limit)
  2. Rate limiting: Yelp may temporarily block requests if too many are made in a short period
  3. Dynamic content: Some business information may not be available if loaded via JavaScript after initial page load
  4. Regional availability: Not all businesses have complete information across all fields
  5. Review limit: Only the first 5 reviews are extracted per business
  6. 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

  1. Start with a small maxResults value (10-20) to test your search parameters
  2. Use specific search terms for better results
  3. Combine multiple search terms in a single run for efficiency
  4. Monitor the run logs for any warnings about blocked requests