# Yelp Scraper (`automly/yelp-scraper`) Actor

Yelp Scraper: Scrape Yelp businesses by keyword and location or business link: name, rating, reviews count, price, categories, phone, address, website, hours, coordinates, photos, plus full reviews with owner replies. No login.

- **URL**: https://apify.com/automly/yelp-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Lead generation, E-commerce
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 businesses

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Yelp Scraper - Businesses, Reviews, Phones & Hours

### What is Yelp Scraper?

**Yelp Scraper** is a tool that lets you **scrape businesses, phone numbers, addresses, opening hours and reviews from Yelp**: name, rating, review count, price level, categories, website, coordinates and photos for any search term in any city, plus **full reviews** with the reviewer's details and **the owner's reply**. Add what and where to search, or paste Yelp business links, click **Start**, and download the data as Excel, CSV or JSON.

- ⚡ **Fast:** 800 businesses with phone, address, website and hours in about 8 seconds; 4,400 reviews in about 15 seconds (our tests)
- 🗺️ **Past the 230-result limit:** one search can give thousands of businesses, not just the 230 Yelp shows
- 💬 **All reviews:** every review of a business, in every language, sorted the way you want
- 🔓 **No login:** no Yelp account or API key needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers about 5,000 businesses in a basic list (without phone, address, website and hours)

### What can Yelp Scraper do?

- **Scrape Yelp search results by keyword and city**: any keyword in any city, ZIP code, neighborhood or address, in the US and worldwide
- **Get Yelp business phone numbers and addresses**: phone number, street address, ZIP code, website and opening hours for lead generation
- **Scrape all Yelp reviews of a business**: star rating, full text, date, reviewer name, location, review count, friends, photos and Elite status
- **Get Yelp owner replies** to reviews, with who replied and when
- **Filter Yelp reviews** by star rating, language and date, and sort them by newest, oldest, Yelp's own order, highest or lowest rating or Elite reviewers
- **Paste Yelp links**: business pages, photo and menu pages, and search pages from any Yelp country site
- **Build local business lead lists** of all the plumbers, dentists, restaurants or salons in a city
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from Yelp?

| | | |
|---|---|---|
| 🏪 Business name and Yelp link | ⭐ Rating and review count | 💲 Price level |
| 🏷️ Categories | 📞 Phone number | 📍 Full address and ZIP code |
| 🌐 Website | 🕒 Opening hours | 🧭 Latitude and longitude |
| 🏙️ Neighborhood and city | 🖼️ Photos | 💬 Review text and stars |
| 📅 Review date | 👤 Reviewer name, location and stats | 🏅 Elite status |
| 👍 Helpful, Thanks, Love this reactions | 🗨️ Owner's reply | 🌍 Review language |

### How to scrape Yelp

1. [Create a free Apify account](https://console.apify.com/sign-up) (no credit card needed).
2. Open **Yelp Scraper**.
3. Enter search terms and locations (`pizza` in `San Francisco, CA`), or paste Yelp business links.
4. Choose how many businesses you want, and turn on **Include reviews** if you need them.
5. Click **Start**, then download the data as Excel, CSV, JSON, HTML or XML.

### How much does it cost to scrape Yelp businesses and reviews?

You pay only for the rows you get. A business with phone, address, website and hours (the default) has its own price, and a business from a basic list costs less:

| Apify plan | Businesses per 1,000 | Businesses with phone, address, website and hours per 1,000 | Reviews per 1,000 |
|---|---|---|---|
| Free | $1.00 | $1.50 | $0.25 |
| Starter (Bronze) | $0.90 | $1.35 | $0.22 |
| Scale (Silver) | $0.80 | $1.20 | $0.20 |
| Business (Gold) and higher | $0.70 | $1.05 | $0.18 |

Platform usage is included in these prices, so you pay nothing else. For example, 1,000 businesses with phone, address, website and hours cost $1.50 on the Free plan and $1.05 on Business, and 10,000 reviews cost $2.50 on the Free plan. Turn off **Include phone, address, website and hours** for the cheapest business lists, and you can also set a maximum cost per run.

Every Apify account gets **$5 of free usage each month**. See the **Pricing** tab for details.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Search terms** | What to look for, one per line: `pizza`, `plumbers`, `hair salons`. Every term is searched in every location. Empty lists all businesses |
| **Locations** | Where to search, one per line: a city (`Austin, TX`), a ZIP code (`10001`), a neighborhood or an address. Cities outside the US work too (`London`, `Paris, France`) |
| **Yelp business or search links** | Business pages (`https://www.yelp.com/biz/golden-boy-pizza-san-francisco`), their photo, menu or map pages, or search pages. Any Yelp country site |
| **Max businesses per search** | How many businesses to save per search term and location (0 = all) |
| **Include phone, address, website and hours** | On by default. Turn off for a quicker, cheaper list with name, rating, review count, price, categories, neighborhood, city, coordinates and photos |
| **Include reviews** | Also save the reviews of every business |
| **Max reviews per business** | How many reviews per business (0 = all) |
| **Sort reviews by** | Newest, oldest, Yelp sort, highest rated, lowest rated or Elite reviewers first |
| **Only these star ratings** | For example only 1 and 2 stars, to collect complaints |
| **Review language** | A language code like `en` or `es`, or `all` (English first, then the others) |
| **Reviews newer than** | Only reviews written on or after this date |

All coffee shops in two cities, with contact details:

```json
{
  "searchTerms": ["coffee"],
  "locations": ["Austin, TX", "Portland, OR"],
  "maxBusinesses": 0
}
```

The 200 newest reviews of two businesses:

```json
{
  "startUrls": [
    "https://www.yelp.com/biz/golden-boy-pizza-san-francisco",
    "https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco"
  ],
  "includeReviews": true,
  "maxReviews": 200,
  "reviewsSort": "newest"
}
```

Every 1- and 2-star review since January for the top 20 pizza places:

```json
{
  "searchTerms": ["pizza"],
  "locations": ["Chicago, IL"],
  "maxBusinesses": 20,
  "includeReviews": true,
  "maxReviews": 0,
  "reviewsStars": ["1", "2"],
  "reviewsSince": "2026-01-01"
}
```

### ⬆️ Output

Every business and every review is one row, and the `type` field says which kind it is. Businesses and reviews share one table, so you can filter by `type` in Excel or Google Sheets.

A business:

```json
{
  "type": "business",
  "id": "YAnvqg699tciMYsqQfqMjw",
  "alias": "andersons-coffee-company-austin",
  "name": "Anderson's Coffee Company",
  "url": "https://www.yelp.com/biz/andersons-coffee-company-austin",
  "rating": 4.6,
  "reviewCount": 199,
  "priceRange": "$$",
  "categories": ["Coffee Roasteries"],
  "phone": "(512) 453-1533",
  "address": "1601 W 38th St, Ste 2, Austin, TX 78731",
  "street": "1601 W 38th St, Ste 2",
  "city": "Austin",
  "state": "TX",
  "postalCode": "78731",
  "country": "US",
  "neighborhoods": [],
  "latitude": 30.3085714,
  "longitude": -97.7503281,
  "website": "https://andersonscoffee.com",
  "hours": [
    {"day": "Monday", "hours": "9:00 AM - 5:00 PM"},
    {"day": "Tuesday", "hours": "9:00 AM - 5:00 PM"}
  ],
  "imageUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/gYAuDOnNQ0EAIib1Q30glw/l.jpg",
  "photos": [
    "https://s3-media0.fl.yelpcdn.com/bphoto/gYAuDOnNQ0EAIib1Q30glw/l.jpg",
    "https://s3-media0.fl.yelpcdn.com/bphoto/GGrzlTw1h3hU6raTHTS86A/l.jpg"
  ],
  "source": "coffee in Austin, TX",
  "scrapedAt": "2026-10-01T17:36:04Z"
}
```

A review:

```json
{
  "type": "review",
  "id": "L2n9MWEyyZWggzP4Uo0yKg",
  "url": "https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco?hrid=L2n9MWEyyZWggzP4Uo0yKg",
  "businessId": "mSMZJj2pFvttWLpcDmgrEA",
  "businessAlias": "tonys-pizza-napoletana-san-francisco",
  "businessName": "Tony's Pizza Napoletana",
  "businessUrl": "https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco",
  "rating": 4,
  "text": "Lots of options to pick from! Tried The Porto, Margherita, cal Italia, and Italian chopped salad which were all filling and tasty options",
  "language": "en",
  "date": "2026-09-21T05:47:11Z",
  "localDate": "2026-09-20T22:47:11-07:00",
  "authorName": "Sylvia G.",
  "authorLocation": "San Francisco, CA",
  "authorUrl": "https://www.yelp.com/user_details?userid=xYGvDQVd4eiJnU5TkDSHYg",
  "authorReviewCount": 67,
  "authorFriendCount": 0,
  "authorPhotoCount": 24,
  "authorEliteYear": 2026,
  "helpfulCount": 1,
  "thanksCount": 1,
  "loveThisCount": 0,
  "ohNoCount": 0,
  "isFirstReviewer": false,
  "ownerReplyText": "Thank you for the nice review, Sylvia! :)",
  "ownerReplyDate": "2026-09-21T05:47:39Z",
  "ownerReplyName": "Stephanie D.",
  "ownerReplyRole": "CUSTOMER_SERVICE",
  "source": "https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco",
  "scrapedAt": "2026-10-01T17:35:41Z"
}
```

With **Include phone, address, website and hours** turned off, business rows keep the same columns, and `alias`, `phone`, `street`, `postalCode`, `website` and `hours` are empty. The **Overview** tab shows businesses and reviews side by side.

### How many results can I get?

Yelp shows at most 230 results for one search. When you ask for more and the area has more, the scraper still finds them and saves each business once, so `pizza` in San Francisco gave over 2,100 businesses in one run (our test). Reviews have no such limit: every review Yelp shows publicly can be saved, thousands per business.

### How can I use Yelp data?

- **Lead generation:** build lists of local businesses with phone numbers, addresses and websites, by category and city
- **Reputation monitoring:** collect new reviews of your business or your clients' businesses every day
- **Competitor research:** compare ratings, review counts, prices and review themes across competitors
- **Customer insight:** read what customers love and complain about, with 1- and 2-star filters
- **Market research:** count businesses per category and neighborhood, map them with coordinates
- **Sentiment analysis and AI:** feed review text and ratings into your models and dashboards

### Scrape more local business data

| Actor | What it gets |
|---|---|
| [Google Maps Scraper](https://apify.com/automly/google-maps-scraper) | Businesses from Google Maps with phones, websites, ratings, reviews and opening hours |
| [Tripadvisor Reviews Scraper](https://apify.com/automly/tripadvisor-reviews-scraper) | Hotel, restaurant and attraction reviews with ratings and owner responses |
| [Trustpilot Reviews Scraper - Ratings, Replies & Company Data](https://apify.com/automly/trustpilot-reviews-scraper) | Company reviews, replies and TrustScore |
| [Website Email Scraper](https://apify.com/automly/website-email-scraper) | Email addresses from a business website and its contact pages |
| [Facebook Pages Scraper - Page Details & Contacts](https://apify.com/automly/facebook-page-details-scraper) | Facebook Page details with business e-mail, phone, address and websites |

### ❓FAQ

#### How much does it cost to scrape Yelp?

On the Free plan, a business with phone, address, website and hours costs $1.50 per 1,000, a business from a basic list $1.00 per 1,000 and a review $0.25 per 1,000, with lower prices on paid plans. See **How much does it cost to scrape Yelp businesses and reviews?** above.

#### How many businesses can I scrape from one Yelp search?

Thousands. Yelp itself shows at most 230 results for a search, but this scraper goes past that: `pizza` in San Francisco gave over 2,100 businesses in one run. Reviews have no such limit: every review Yelp shows publicly can be saved, thousands per business.

#### Can I scrape all reviews of a business?

Yes. Set **Max reviews per business** to 0 to save every review Yelp shows publicly, in every language. Reviews Yelp hides as "not recommended" are not included.

#### Are review photos included?

Not at the moment. Each review has its text, stars, date, reactions, owner reply and reviewer details, including how many photos the reviewer has added. Business photos are included.

#### Why do some businesses have no phone, street or hours?

Yelp only shows what the business has listed. Service businesses like plumbers often hide their street address, and some businesses have no hours or website on Yelp.

#### Do I need a Yelp account or API key?

No. You get the same public business details and reviews anyone can see on Yelp without signing in.

#### Can I call it as an API?

Yes. Run it through the Apify API from any language, or use its real-time API, `/search?term=pizza&location=Austin, TX` and `/business?url=<Yelp business link>`, which answers with the rows directly.

#### Can I connect Yelp Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape Yelp?

This scraper only collects public business information and reviews that people chose to post publicly. It does not collect private data such as reviewers' email addresses or phone numbers. Reviews carry reviewers' public display names and can contain personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Yelp Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Yelp.

#### Something isn't working?

Open the **Issues** tab and tell us your input and what you expected. We read every issue and usually reply within a day.

### ⭐ Your feedback

Have an idea or found a problem? Tell us on the **Issues** tab. If Yelp Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

## `searchTerms` (type: `array`):

Enter what to search Yelp for, one per line ("pizza", "plumbers", "hair salons"). Every term is searched in every location. Leave empty to list all businesses in the locations.

## `locations` (type: `array`):

Enter where to search, one per line: a city ("San Francisco, CA"), a ZIP code ("10001"), a neighborhood or an address. Cities outside the US work too ("London", "Paris, France").

## `startUrls` (type: `array`):

Paste Yelp links in any mix: business pages (yelp.com/biz/...), their photo, menu or map pages, or search pages (yelp.com/search?find_desc=...\&find_loc=...). Any Yelp country site works. A business ID or alias on its own works too.

## `maxBusinesses` (type: `integer`):

How many businesses to save for each search term in each location. Set 0 for all of them. Searches over 230 results also cover the area in smaller parts, so big cities give thousands.

## `includeDetails` (type: `boolean`):

Add the full street address, phone number, website, opening hours, ZIP code and alias to every business from a search. Turn off for a faster, cheaper list with name, rating, review count, price, categories, neighborhood, city, coordinates and photos. Business links always get full details.

## `includeReviews` (type: `boolean`):

Also save the reviews of every business: rating, full text, date, reviewer name, location and stats, reactions and the owner's reply.

## `maxReviews` (type: `integer`):

How many reviews to save for each business. Set 0 for all of them.

## `reviewsSort` (type: `string`):

The order reviews are saved in.

## `reviewsStars` (type: `array`):

Pick star ratings to save only those reviews (for example 1 and 2 stars for complaints). Leave empty for all.

## `reviewsLanguage` (type: `string`):

A two-letter language code (en, es, fr, de, ...) to save only reviews in that language, or all for every language (English first).

## `reviewsSince` (type: `string`):

Save only reviews written on or after this date (newest first). Leave empty for all dates.

## `proxyConfiguration` (type: `object`):

Apify Proxy works out of the box.

## Actor input object example

```json
{
  "searchTerms": [
    "pizza"
  ],
  "locations": [
    "San Francisco, CA"
  ],
  "startUrls": [
    "https://www.yelp.com/biz/golden-boy-pizza-san-francisco"
  ],
  "maxBusinesses": 20,
  "includeDetails": true,
  "includeReviews": false,
  "maxReviews": 100,
  "reviewsSort": "newest",
  "reviewsLanguage": "all",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "pizza"
    ],
    "locations": [
        "San Francisco, CA"
    ],
    "startUrls": [
        "https://www.yelp.com/biz/golden-boy-pizza-san-francisco"
    ],
    "maxBusinesses": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/yelp-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["pizza"],
    "locations": ["San Francisco, CA"],
    "startUrls": ["https://www.yelp.com/biz/golden-boy-pizza-san-francisco"],
    "maxBusinesses": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/yelp-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "pizza"
  ],
  "locations": [
    "San Francisco, CA"
  ],
  "startUrls": [
    "https://www.yelp.com/biz/golden-boy-pizza-san-francisco"
  ],
  "maxBusinesses": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/yelp-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/yelp-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/JAgq4uCRYx6elNbci/builds/z3m9AKMbXNcOm2MFT/openapi.json
