# Yelp Business Scraper (`beatanalytics/yelp-business-scraper`) Actor

Extract 25+ fields from any Yelp business — ratings, hours, photos, address, categories, and attributes. Search by query and location or look up by URL. No API key needed. Export as CSV, JSON, or Excel.

- **URL**: https://apify.com/beatanalytics/yelp-business-scraper.md
- **Developed by:** [Beat Analytics](https://apify.com/beatanalytics) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Features:** Limited permissions
- **Stats:** 421 total users, 142 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Business Scraper - Extract Business Details & Search Results Without the API

**Yelp Business Scraper** is an Apify actor that extracts detailed business information from Yelp listings and search results without a Yelp API key. It returns 25+ structured fields per business - more than the official Yelp Fusion API - with no authentication setup and no request limits. Search for businesses by query and location, or look up specific businesses by URL, alias, or ID; results are deduplicated automatically. Use the data for competitive intelligence, lead generation, or market research.

- [Why use this Yelp business scraper?](#why-use-this-yelp-business-scraper)
- [What data can you extract from Yelp businesses?](#what-data-can-you-extract-from-yelp-businesses)
- [How to scrape Yelp business data](#how-to-scrape-yelp-business-data)
- [Input parameters](#input-parameters)
- [Output example](#output-example)
- [How much does it cost to scrape Yelp business data?](#how-much-does-it-cost-to-scrape-yelp-business-data)
- [Use cases for Yelp business data](#use-cases-for-yelp-business-data)
- [Integrations and API access](#integrations-and-api-access)
- [Frequently asked questions](#frequently-asked-questions)
- [Related actors](#related-actors)

### Why use this Yelp business scraper?

- 🔍 **Search for businesses by query and location** - find businesses matching any search term in any city, state, or neighborhood, e.g. "pizza" in "Chicago, IL" or "coffee shops" in "San Francisco, CA".
- 🔄 **Cartesian product search** - provide multiple queries and locations to search all combinations automatically. 5 queries and 10 locations run 50 searches in one job.
- 🔗 **Direct business lookup by URL, alias, or ID** - paste URLs like `https://www.yelp.com/biz/the-old-fashioned-madison`, aliases like `the-old-fashioned-madison`, or Yelp business IDs.
- 🧩 **Combine search and direct lookup** - use both in the same run; the scraper merges and deduplicates the results.
- ⚡ **No API key required** - no app registration, API keys, or OAuth tokens. Add your inputs and click Start.
- 🔓 **No rate limits** - the Yelp Fusion API enforces strict daily quotas; this scraper has none. Scrape thousands of businesses in one run.
- 📊 **25+ data fields per business** - more than the Fusion API returns, including business attributes (Wi-Fi, outdoor seating, reservations), health inspection scores, photo URLs, menu links, and machine-readable hours.
- 💾 **Export as JSON, CSV, Excel, XML, or HTML** - all five formats work out of the box.
- 🛡️ **Automatic deduplication** - businesses found through multiple queries or inputs appear once, so you never pay for duplicate records.
- 🌐 **Full Yelp API alternative** - use it anywhere you would use the Yelp Fusion API, with more data and no configuration.

### What data can you extract from Yelp businesses?

The scraper returns 25+ structured fields for each business:

**Business identity:**

- **id** - Yelp's internal business ID (e.g. `RJNAeNA-209sctUO0dmwuA`)
- **alias** - URL-friendly business alias/slug (e.g. `the-old-fashioned-madison`)
- **name** - Business display name
- **url** - Direct link to the Yelp business page

**Location and geography:**

- **address** - Street address
- **city** - City name
- **state** - State or province code
- **zip** - ZIP or postal code
- **country** - Country code (e.g. `US`)
- **latitude** - Geographic latitude coordinate
- **longitude** - Geographic longitude coordinate
- **neighborhoods** - List of neighborhoods the business belongs to

**Business classification:**

- **categories** - Business categories (e.g. "American", "Breakfast & Brunch", "Beer Bar")
- **price_range** - Price level indicator (e.g. "$", "$$", "$$$", "$$$$")

**Contact information:**

- **phone** - Business phone number
- **website** - Business website URL

**Ratings and reviews:**

- **avg_rating** - Average star rating (rounded, e.g. 4.0)
- **unrounded_avg_rating** - Precise average rating (e.g. 4.1)
- **review_count** - Total number of reviews on Yelp

**Hours of operation:**

- **hours** - Machine-readable hours as minute-based intervals (useful for programmatic analysis)
- **localized_hours** - Human-readable business hours (e.g. "Mon-Thu 11:00 am - 9:00 pm")

**Media and extras:**

- **photos** - List of business photo URLs (full-resolution Yelp CDN links)
- **attributes** - Business attributes like "Takes Reservations: No", "Wi-Fi: Free", "Outdoor Seating: Yes"
- **health_score** - Health inspection result (where available)
- **health_score_url** - Link to health inspection details
- **menu_url** - Link to the business menu on Yelp

**Business status:**

- **is_closed** - Whether the business is permanently closed
- **is_temp_closed** - Whether the business is temporarily closed

**Search context (when found via search):**

- **\_search.query** - The search query that returned this business
- **\_search.location** - The location that was searched
- **\_search.rank** - Position in search results for that query and location (1-indexed)

### How to scrape Yelp business data

Follow these five steps to extract Yelp business details:

**Step 1: Create a free Apify account**

Sign up at [apify.com](https://apify.com) if you do not have an account yet. Every new account includes $5 in free credits - enough to scrape 2,000 Yelp business listings at no cost.

**Step 2: Open the Yelp Business Scraper**

Navigate to the [Yelp Business Scraper](https://apify.com/beatanalytics/yelp-business-scraper) actor page on the Apify Store and click "Try for free" or "Start."

**Step 3: Add your search queries, locations, or business URLs**

You have three ways to specify which businesses to scrape:

- **Search:** Enter search queries (e.g. "pizza", "plumber", "coffee shop") and locations (e.g. "New York, NY", "London, UK"). The scraper searches all combinations of queries and locations.
- **Direct URLs:** Paste one or more Yelp business page URLs, such as `https://www.yelp.com/biz/the-old-fashioned-madison`.
- **Aliases or IDs:** Enter Yelp business aliases (e.g. `the-old-fashioned-madison`) or internal Yelp business IDs.

You can combine all three methods in a single run. The scraper deduplicates results automatically.

**Step 4: Click Start**

Click the "Start" button to begin the scrape. The scraper will process your inputs, fetch business details, and push results to the dataset. You can monitor progress in real time on the run detail page.

**Step 5: Download your data in JSON, CSV, Excel, XML, or HTML**

Once the run completes, go to the Storage tab to view and download your results. Apify supports five export formats out of the box:

- **JSON** - structured data, ideal for programmatic processing
- **CSV** - spreadsheet-friendly, opens directly in Excel or Google Sheets
- **Excel (.xlsx)** - native Excel format with proper column types
- **XML** - for systems that consume XML feeds
- **HTML** - human-readable table view

You can also access your data programmatically through the Apify API, or set up automatic exports to Google Sheets, Dropbox, Amazon S3, and other destinations.

### Input parameters

The Yelp Business Scraper accepts the following input parameters:

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `searchQueries` | Array of strings | No | - | Search query strings to find businesses (e.g. "pizza", "cheese curds", "plumber"). Used together with `searchLocations`; all combinations are searched. |
| `searchLocations` | Array of strings | No | - | Locations to search in (e.g. "Madison, WI", "Chicago, IL", "New York"). Used together with `searchQueries`; all combinations are searched. |
| `businessUrls` | Array of URLs | No | - | Yelp URLs of specific businesses you want details for (e.g. `https://www.yelp.com/biz/the-old-fashioned-madison`). Can be used instead of or in addition to search. |
| `businessAliasesOrIds` | Array of strings | No | - | Business aliases (e.g. `the-old-fashioned-madison`) or Yelp business IDs. Can be used instead of or in addition to URLs and/or search. |
| `maxResultsPerSearch` | Integer | No | 10 | Maximum number of business results per search query+location combination. Increase this to get more results per search. |

**Note:** You must provide at least one of `searchQueries` (with `searchLocations`), `businessUrls`, or `businessAliasesOrIds`. You can use any combination of these inputs together; the scraper merges and deduplicates all results automatically.

**Search example:** Setting `searchQueries` to `["pizza", "sushi"]` and `searchLocations` to `["Chicago, IL", "New York, NY"]` will run four searches: pizza in Chicago, pizza in New York, sushi in Chicago, and sushi in New York. With `maxResultsPerSearch` set to 10, this would return up to 40 unique businesses (fewer if there is overlap between searches).

### Output example

The Yelp Business Scraper outputs data in two formats: a structured JSON dataset and a flattened CSV file. You can download results in JSON, CSV, Excel, XML, or HTML from the Storage tab after each run.

#### JSON dataset

The results are stored in a dataset which you can find in the Storage tab. Each item in the dataset represents a single business.

##### Example JSON output

```json
{
  "id": "RJNAeNA-209sctUO0dmwuA",
  "alias": "the-old-fashioned-madison",
  "name": "The Old Fashioned",
  "url": "https://www.yelp.com/biz/the-old-fashioned-madison",
  "is_closed": false,
  "is_temp_closed": false,
  "address": "23 N Pinckney St",
  "city": "Madison",
  "state": "WI",
  "zip": "53703",
  "country": "US",
  "latitude": 43.0761862475496,
  "longitude": -89.3837572171967,
  "neighborhoods": ["Capitol"],
  "categories": ["American", "Breakfast & Brunch", "Beer Bar"],
  "phone": "(608) 310-4545",
  "website": "http://theoldfashioned.com/",
  "price_range": "$$",
  "avg_rating": 4.0,
  "unrounded_avg_rating": 4.1,
  "review_count": 2529,
  "hours": [[660, 1260], [2100, 2700], [3540, 4140], [4980, 5580], [6420, 7080], [7800, 8520]],
  "localized_hours": [
    "Mon-Thu 11:00 am - 9:00 pm",
    "Fri 11:00 am - 10:00 pm",
    "Sat 10:00 am - 10:00 pm"
  ],
  "photos": [
    "https://s3-media0.fl.yelpcdn.com/bphoto/n1imsZpO7rNv0aueEL52EQ/o.jpg",
    "https://s3-media0.fl.yelpcdn.com/bphoto/K5cehQF2wsBV76sha1oGHg/o.jpg",
    "https://s3-media0.fl.yelpcdn.com/bphoto/ptE_UYxhabKfEztonGqHDw/o.jpg"
  ],
  "attributes": [
    {"label": "Takes Reservations", "value": "No"},
    {"label": "Offers Delivery", "value": "Yes"},
    {"label": "Outdoor Seating", "value": "Yes"},
    {"label": "Wi-Fi", "value": "Free"}
  ],
  "health_score": "No Reinspection Required",
  "health_score_url": "https://m.yelp.com/inspections/the-old-fashioned-madison",
  "menu_url": "https://m.yelp.com/menu/RJNAeNA-209sctUO0dmwuA"
}
```

#### CSV file

Business details are stored in a CSV file named `businesses.csv`. The file contains the following columns:

- `id`: Yelp business ID
- `alias`: Yelp business alias (URL slug)
- `name`: Business name
- `url`: Link to the Yelp business page
- `is_closed`: Whether the business is permanently closed
- `is_temp_closed`: Whether the business is temporarily closed
- `address`: Street address
- `city`: City
- `state`: State
- `zip`: ZIP code
- `country`: Country code
- `latitude`: Latitude
- `longitude`: Longitude
- `neighborhoods`: Neighborhoods (newline-separated)
- `categories`: Business categories (newline-separated)
- `phone`: Phone number
- `website`: Website URL
- `price_range`: Price range (e.g. "$$")
- `avg_rating`: Average star rating
- `unrounded_avg_rating`: Unrounded average star rating
- `review_count`: Number of reviews
- `localized_hours`: Human-readable business hours (newline-separated)
- `photos`: Photo URLs (newline-separated)
- `attributes`: Business attributes as "Label: Value" (newline-separated)
- `health_score`: Health inspection score
- `health_score_url`: Link to health inspection details
- `menu_url`: Link to the business menu

##### Example CSV output

```csv
id,alias,name,url,is_closed,is_temp_closed,address,city,state,zip,country,latitude,longitude,neighborhoods,categories,phone,website,price_range,avg_rating,unrounded_avg_rating,review_count,localized_hours,photos,attributes,health_score,health_score_url,menu_url
RJNAeNA-209sctUO0dmwuA,the-old-fashioned-madison,The Old Fashioned,https://www.yelp.com/biz/the-old-fashioned-madison,False,False,23 N Pinckney St,Madison,WI,53703,US,43.0761862475496,-89.3837572171967,Capitol,"American
Breakfast & Brunch
Beer Bar","(608) 310-4545",http://theoldfashioned.com/,$$,4.0,4.1,2529,"Mon-Thu 11:00 am - 9:00 pm
Fri 11:00 am - 10:00 pm
Sat 10:00 am - 10:00 pm","https://s3-media0.fl.yelpcdn.com/bphoto/n1imsZpO7rNv0aueEL52EQ/o.jpg
https://s3-media0.fl.yelpcdn.com/bphoto/K5cehQF2wsBV76sha1oGHg/o.jpg","Takes Reservations: No
Offers Delivery: Yes
Outdoor Seating: Yes
Wi-Fi: Free",No Reinspection Required,https://m.yelp.com/inspections/the-old-fashioned-madison,https://m.yelp.com/menu/RJNAeNA-209sctUO0dmwuA
```

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

The Yelp Business Scraper uses per-result pricing: you only pay for the data you get.

**$2.50 per 1,000 results** - each business returned counts as one result, whether found via search or direct URL lookup. Deduplication happens before billing, so you never pay for the same business twice.

**Free trial:** every new Apify account comes with $5 in free platform credits, no credit card required - enough to scrape 2,000 business listings at no cost.

**Enterprise plans:** for large volumes on a regular basis, from thousands up to millions of listings per month, contact <sales@beatanalytics.org> for custom Enterprise pricing with dedicated support and volume discounts.

### Use cases for Yelp business data

Yelp business data powers analytical, operational, and research workflows:

**Competitive intelligence and benchmarking**

Scrape Yelp business details for your competitors and compare ratings, review counts, price ranges, categories, and attributes side by side. Schedule regular runs to track how competitor ratings and review volumes change over time, and see which attributes (outdoor seating, delivery, Wi-Fi) competitors offer that you do not.

**Market research and industry analysis**

Search for all businesses in a given category and location to map the competitive landscape. Analyze business density by category, neighborhood, or price range to identify underserved markets, trending categories, or gaps in service coverage.

**Lead generation and sales prospecting**

Extract contact information (phone numbers, website URLs) for businesses matching specific criteria. Build targeted prospect lists by category and location, and use attributes, ratings, and review counts to qualify leads and prioritize outreach.

**Real estate and location intelligence**

Analyze business density and category distribution by neighborhood to evaluate commercial real estate opportunities. Use latitude/longitude data to build heat maps of business activity and gauge the character of a neighborhood from the businesses present.

**Local SEO and business directory building**

Build local business directories from Yelp data. Aggregate details across categories and locations to create niche industry directories, or power local search features in your own applications.

**Academic and social science research**

Study patterns in business ratings, review volumes, and category distributions across cities and regions. Analyze the relationship between business attributes and customer satisfaction, or use business density as a proxy for economic activity in urban development research.

**Business operations and supply chain**

Identify potential suppliers, vendors, or partners in specific locations. Build databases of businesses matching set criteria for partnership or franchise development, and monitor the open/closed status of businesses in your supply chain or competitive set.

**Data journalism and public interest reporting**

Investigate business trends, closures, and patterns across neighborhoods and cities. Analyze health inspection scores against ratings, or report on the economic health of commercial districts using Yelp business data as a proxy.

### Integrations and API access

The Yelp Business Scraper integrates with the Apify platform ecosystem, giving you programmatic access to your scraped data and the ability to connect it to thousands of external tools.

#### Python

Use the [Apify Python SDK](https://docs.apify.com/sdk/python/) to run the scraper and retrieve results programmatically:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run_input = {
    "searchQueries": ["pizza", "sushi"],
    "searchLocations": ["Chicago, IL"],
    "maxResultsPerSearch": 20,
}

run = client.actor("beatanalytics/yelp-business-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['name']} - {item['avg_rating']} stars - {item['address']}, {item['city']}")
```

#### JavaScript / Node.js

Use the [Apify JavaScript SDK](https://docs.apify.com/sdk/js/) to integrate Yelp business scraping into your Node.js applications:

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

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("beatanalytics/yelp-business-scraper").call({
    searchQueries: ["coffee shops"],
    searchLocations: ["San Francisco, CA"],
    maxResultsPerSearch: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.log(`${item.name} - ${item.avg_rating} stars - ${item.phone}`);
});
```

#### No-code integrations

Connect the Yelp Business Scraper to thousands of apps without writing code:

- **Make (formerly Integromat)** - trigger workflows when new Yelp data is scraped, or schedule regular runs as part of larger automations
- **Zapier** - connect Yelp business data to Google Sheets, Slack, email, CRM tools, and 5,000+ other apps
- **Webhooks** - receive HTTP notifications when a run completes, then process the data in your own backend
- **Google Sheets** - export results directly to a spreadsheet for collaborative analysis
- **Amazon S3 / Dropbox** - automatically save scraped data to cloud storage after each run

#### Scheduled runs

Set up the Yelp Business Scraper to run on a schedule (hourly, daily, weekly, or custom cron) to keep your data fresh. Each run appends new results to your dataset, making it easy to track changes in business details, ratings, and review counts over time.

#### API endpoints

Every scraper run on Apify exposes RESTful API endpoints for accessing results, checking run status, and managing datasets. See the [Apify API documentation](https://docs.apify.com/api/v2) for the complete reference.

### Frequently asked questions

#### Is it legal to scrape Yelp business data?

Scraping publicly available business information from Yelp is generally considered legal in the United States, following the precedent set by the *hiQ Labs v. LinkedIn* case, where the Ninth Circuit Court of Appeals ruled that scraping publicly accessible data does not violate the Computer Fraud and Abuse Act. Yelp business details such as names, addresses, ratings, hours, and categories are publicly visible to anyone browsing the Yelp website without logging in. However, laws vary by jurisdiction, and you should consult a legal professional if you have concerns about your specific use case. Always use scraped data responsibly and in compliance with applicable laws and regulations.

#### How is this different from the Yelp Fusion API?

The Yelp Fusion API is Yelp's official developer API. While it provides structured access to business data, it has several limitations that this scraper addresses:

- **Authentication:** The Fusion API requires you to register an application and manage API keys. This scraper requires no API key or authentication setup.
- **Rate limits:** The Fusion API enforces strict daily request quotas (typically 5,000 requests per day for free-tier apps). This scraper has no request limits.
- **Data fields:** This scraper extracts fields that the Fusion API does not return, including business attributes with values, health inspection scores, menu URLs, and machine-readable hours.
- **Search flexibility:** This scraper supports cartesian product search (multiple queries times multiple locations in a single run) and automatic deduplication.
- **Review data:** The Fusion API returns only 3 reviews per business. For full review data, use this scraper with our [Yelp Business Review Scraper](https://apify.com/beatanalytics/yelp-business-review-scraper).

#### What is the difference between the Yelp Business Scraper and the Yelp Business Review Scraper?

These are two complementary Apify actors:

- **Yelp Business Scraper** (this actor) extracts business details: name, address, hours, ratings, photos, categories, attributes, and more. It also supports search, so you can discover businesses by query and location.
- **[Yelp Business Review Scraper](https://apify.com/beatanalytics/yelp-business-review-scraper)** extracts individual reviews for specific businesses: review text, star ratings, dates, reviewer information, and business owner replies. It supports filtering by language and sorting by date, rating, or elite status.

Use both together: scrape business details with this actor to identify businesses of interest, then pass those business URLs to the Review Scraper to extract all their reviews for sentiment analysis or reputation monitoring.

#### How many businesses can I scrape?

There is no hard limit on the number of businesses you can scrape in a single run. Typical runs scraping 100-500 businesses complete in a few minutes. Runs scraping thousands of businesses may take longer but are fully supported. For very large-scale scraping (tens of thousands of businesses), consider reaching out to <sales@beatanalytics.org> for [Enterprise plans](#how-much-does-it-cost-to-scrape-yelp-business-data) with volume discounts.

#### Can I search for businesses by location?

Yes. The Yelp Business Scraper supports location-based search as a core feature. Enter one or more locations in the `searchLocations` field along with search queries in the `searchQueries` field (see [Input parameters](#input-parameters)). The scraper searches all combinations of queries and locations automatically. Each business result includes its full address, city, state, ZIP code, country, latitude, and longitude, so you can perform geographic analysis on the results.

#### What export formats are supported?

The Yelp Business Scraper supports five export formats, all available directly from the Apify platform with no additional configuration:

- **JSON** - structured data, ideal for programmatic processing and API integrations
- **CSV** - comma-separated values, opens directly in Excel, Google Sheets, or any spreadsheet tool
- **Excel (.xlsx)** - native Microsoft Excel format with proper column types
- **XML** - for systems that consume XML feeds or require XML-based data exchange
- **HTML** - human-readable table view for quick visual inspection

You can download data in any format from the Storage tab after a run completes, or retrieve it programmatically through the Apify API.

#### How often is the data updated?

The Yelp Business Scraper fetches live data from Yelp every time it runs. There is no cached or stale data - each run makes fresh requests to Yelp and returns the most current business information available. To keep your data fresh, you can schedule the scraper to run on a recurring basis (hourly, daily, weekly, or on a custom cron schedule) using Apify's built-in scheduling feature. This is particularly useful for tracking changes in ratings, review counts, business hours, or open/closed status over time.

#### Can I scrape Yelp search results?

Yes. Scraping Yelp search results is one of the primary features of this actor. Enter your search queries (e.g. "restaurants", "dentists", "auto repair") and locations (e.g. "Austin, TX"), and the scraper will return full business details for each search result. You can control how many results to return per search with the `maxResultsPerSearch` parameter (default: 10). Each result includes a `_search` field with metadata about which query and location found it, along with its ranking position in the search results.

#### Can I get business photos and attributes?

Yes. The scraper extracts all publicly visible business photos as full-resolution Yelp CDN URLs. Business attributes are extracted as structured label-value pairs - for example, `{"label": "Takes Reservations", "value": "No"}`, `{"label": "Wi-Fi", "value": "Free"}`, `{"label": "Outdoor Seating", "value": "Yes"}`. The specific attributes available depend on what each business has listed on its Yelp page. Common attributes include reservations, delivery, takeout, outdoor seating, Wi-Fi, parking, wheelchair accessibility, and many more.

#### How do I scrape Yelp business data without the API?

The Yelp Business Scraper is designed specifically for this use case. Instead of dealing with API key registration, OAuth authentication, rate limits, and limited data fields, you simply open the scraper on Apify, enter your search queries or business URLs, and click Start. The scraper handles all the data extraction automatically and returns structured results in JSON, CSV, or any other supported format. No API key, no rate limits, no authentication setup. See [How to scrape Yelp business data](#how-to-scrape-yelp-business-data) for a step-by-step walkthrough.

### Related actors

**[Yelp Business Review Scraper](https://apify.com/beatanalytics/yelp-business-review-scraper)**

The companion to this actor. Where this scraper extracts business details (address, hours, ratings, photos, attributes), the Review Scraper extracts individual customer reviews - full text, star ratings, dates, reviewer information, and business owner replies - across every review a business has, not the 3 the Yelp Fusion API caps you at. It filters reviews by language (24 supported) and sorts by newest, oldest, highest or lowest rated, or elite reviews, and handles pagination automatically.

Use them together: search for and identify businesses with this scraper, then feed the resulting URLs into the Review Scraper to extract every review for sentiment analysis, reputation monitoring, or competitive benchmarking.

**[Yelp Photos Scraper](https://apify.com/beatanalytics/yelp-photos-scraper)**

Downloads every photo and video from a Yelp listing - full-resolution image URLs, captions, categories, and video metadata across the entire gallery, not just the sample bundled with business details. Discover businesses by search query and location with this scraper, then feed the resulting URLs into the Photos Scraper to pull each listing's complete photo gallery for visual analysis, content enrichment, or competitive research.

# Actor input Schema

## `searchQueries` (type: `array`):

Search query strings to find businesses (e.g. "cheese curds", "pizza"). Used together with Search locations. All combinations are searched.

## `searchLocations` (type: `array`):

Locations to search in (e.g. "Madison, WI", "Chicago, IL"). Used together with Search queries. All combinations are searched.

## `businessUrls` (type: `array`):

Yelp URLs of specific businesses you wish to retrieve details for. Can be used instead of or in addition to business aliases or IDs and/or search.

## `businessAliasesOrIds` (type: `array`):

Business aliases (e.g. "the-old-fashioned-madison") or IDs. Can be used instead of or in addition to URLs and/or search.

## `maxResultsPerSearch` (type: `integer`):

Maximum number of business results per search query+location combination.

## Actor input object example

```json
{
  "businessUrls": [
    {
      "url": "https://www.yelp.com/biz/the-old-fashioned-madison"
    }
  ],
  "maxResultsPerSearch": 10
}
```

# Actor output Schema

## `businesses` (type: `string`):

All scraped business details with ratings, categories, and metadata.

## `csv` (type: `string`):

Business details exported as a CSV file.

# 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 = {
    "businessUrls": [
        {
            "url": "https://www.yelp.com/biz/the-old-fashioned-madison"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("beatanalytics/yelp-business-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 = { "businessUrls": [{ "url": "https://www.yelp.com/biz/the-old-fashioned-madison" }] }

# Run the Actor and wait for it to finish
run = client.actor("beatanalytics/yelp-business-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 '{
  "businessUrls": [
    {
      "url": "https://www.yelp.com/biz/the-old-fashioned-madison"
    }
  ]
}' |
apify call beatanalytics/yelp-business-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,beatanalytics/yelp-business-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/qkKZa58P5PSqw7j27/builds/gTP8VYGd7koebou1p/openapi.json
