# Yelp Business Scraper — Ratings, Reviews & Contact Details (`totaka/yelp-business-scraper`) Actor

Scrape Yelp business listings for any category and city in the US. Get name, star rating, review count, categories, address, phone, and website. No API key required.

- **URL**: https://apify.com/totaka/yelp-business-scraper.md
- **Developed by:** [Thomas Gharbi](https://apify.com/totaka) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Yelp Business Scraper — Ratings, Reviews & Contact Details

Scrape **Yelp business listings** for any category and city in the United States. Get the business name, star rating, review count, categories, full address, phone number, and website — ready to export to CSV, JSON, or Excel. No Yelp API key required.

---

### What you get

For every Yelp business in your search results:

| Field | Description |
|-------|-------------|
| `title` | Business name |
| `rating` | Star rating (e.g. "4.5 star rating") |
| `reviews` | Total number of Yelp reviews |
| `categories` | Business categories (e.g. Restaurants, Plumbers, Salons) |
| `address` | Full street address |
| `phone` | Phone number |
| `website` | Business website URL |
| `searchQuery` | The query that produced this result |
| `scrapedAt` | Scrape timestamp (ISO 8601) |

---

### How to use

1. Click **Try for free**
2. Enter your search queries in `businessType|city` format — one per line
   - `pizza|New York` · `plumber|Los Angeles` · `dentist|Chicago`
3. Set **Max results per query** (default: 20, max: 100)
4. Click **Run** — results appear in real time in your dataset
5. Export to CSV, JSON, or Excel from the dataset tab

---

### Input parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `searchQueries` | array | Search queries in `type\|city` format |
| `maxResultsPerQuery` | integer | Max listings per query (default: 20, max: 100) |
| `proxyConfiguration` | object | Proxy settings (residential recommended) |

#### Input example

```json
{
  "searchQueries": [
    "electrician|Seattle",
    "italian restaurant|Boston",
    "auto repair|Houston"
  ],
  "maxResultsPerQuery": 50
}
````

***

### Output example

```json
{
  "title": "Mike's Electric LLC",
  "rating": "4.5 star rating",
  "reviews": "312 reviews",
  "categories": "Electricians, Contractors",
  "address": "1234 Industrial Blvd, Seattle, WA 98101",
  "phone": "(206) 555-0198",
  "website": "https://www.mikeselectric.com",
  "searchQuery": "electrician|Seattle",
  "scrapedAt": "2026-06-18T09:23:11.000Z"
}
```

***

### Use cases

**B2B lead generation** — Build targeted prospect lists by trade and city. Get direct phone numbers and websites for cold outreach.

**Local market research** — Map business density, analyze competition, and identify underserved areas before opening a new location.

**Competitor monitoring** — Track how your competitors' ratings and review counts change over time.

**CRM enrichment** — Fill in missing contact data (phone, website, address) on existing records.

**Local SEO analysis** — Benchmark your business rating against others in your category and region.

**Agency prospecting** — Identify local businesses with low Yelp ratings as potential clients for reputation management services.

***

### Why this scraper is reliable

The existing Yelp scrapers on Apify are rated 2.2/5 and 3.2/5 — both from the same author, both flagged as unreliable in user reviews. This scraper uses Playwright with residential proxies and human-behavior simulation (realistic mouse movements, random delays) to reliably bypass Yelp's anti-bot measures.

***

### Limitations

- **US market** — Yelp has listings globally, but coverage is strongest in the United States. For international markets, consider Google Maps scrapers
- **~100 results per search** — Yelp limits search pages; use more specific queries to target sub-niches
- **Residential proxies required** — Yelp blocks datacenter IPs aggressively; do not disable proxy settings
- **No login required** — all publicly visible data is accessible without a Yelp account

***

### Support

Open a ticket in the **Issues tab** on the actor page. We monitor all issues and respond quickly. If a query format doesn't work as expected, open an issue and we'll investigate.

# Actor input Schema

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

Enter one search query per line — exactly as you would type it into Google Maps.<br><br><b>Examples:</b> <code>pizza|New York</code>, <code>restaurant Paris 7ème</code>, <code>dentist New York</code>

## `maxResultsPerQuery` (type: `integer`):

Maximum number of results to scrape per search query.<br><b>Default:</b> 20  |  <b>Max:</b> 100<br><br>⚠️ Higher values mean longer runs and higher costs.

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

Residential proxies are recommended for reliable scraping.

## Actor input object example

```json
{
  "searchQueries": [
    "pizza|New York"
  ],
  "maxResultsPerQuery": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Scraped data items stored in the default dataset

# 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 = {
    "searchQueries": [
        "pizza|New York"
    ],
    "maxResultsPerQuery": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("totaka/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 = {
    "searchQueries": ["pizza|New York"],
    "maxResultsPerQuery": 3,
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "pizza|New York"
  ],
  "maxResultsPerQuery": 3
}' |
apify call totaka/yelp-business-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=totaka/yelp-business-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Yelp Business Scraper — Ratings, Reviews & Contact Details",
        "description": "Scrape Yelp business listings for any category and city in the US. Get name, star rating, review count, categories, address, phone, and website. No API key required.",
        "version": "1.0",
        "x-build-id": "QA70hCbxAMjyV7Skc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/totaka~yelp-business-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-totaka-yelp-business-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/totaka~yelp-business-scraper/runs": {
            "post": {
                "operationId": "runs-sync-totaka-yelp-business-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/totaka~yelp-business-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-totaka-yelp-business-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchQueries"
                ],
                "properties": {
                    "searchQueries": {
                        "title": "🔍 Search queries",
                        "minItems": 1,
                        "type": "array",
                        "description": "Enter one search query per line — exactly as you would type it into Google Maps.<br><br><b>Examples:</b> <code>pizza|New York</code>, <code>restaurant Paris 7ème</code>, <code>dentist New York</code>",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerQuery": {
                        "title": "📊 Max results per query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of results to scrape per search query.<br><b>Default:</b> 20 &nbsp;|&nbsp; <b>Max:</b> 100<br><br>⚠️ Higher values mean longer runs and higher costs.",
                        "default": 20
                    },
                    "proxyConfiguration": {
                        "title": "🌐 Proxy configuration",
                        "type": "object",
                        "description": "Residential proxies are recommended for reliable scraping.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
