# Restaurant Leads & Contacts — Names, Phones & Cuisine (`scrapersdelight/restaurantji-scraper`) Actor

Scrape US restaurant leads from RestaurantJi — name, phone, address, cuisine, price range & rating. Clean structured data for POS, delivery & marketing SaaS. No login. Export JSON/CSV.

- **URL**: https://apify.com/scrapersdelight/restaurantji-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Automation, Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$6.00 / 1,000 per lead returneds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 🍽️ Restaurant Leads & Contacts — Names, Phones & Cuisine

**Turn RestaurantJi into a clean US restaurant lead list — name, phone, full address, cuisine, price range and rating — one flat JSON record per restaurant. No login, no API key, no copy-paste.**

> 🕒 Last updated: 2026-07-07 · 📊 ~12 fields per lead · 🇺🇸 US coverage, city by city · 🚫 No login or API key · ⚡ Structured JSON-LD data

Point it at any city and get **~200 ready-to-call restaurant leads** back — each with a phone number, address, cuisine tags, price band and star rating. Export to JSON, CSV, Excel or Google Sheets, or pull it straight into your CRM / outreach tool via API. A drop-in **restaurant contact database** for POS, delivery and marketing SaaS teams building prospect lists.

***

### What it does

- 🏙️ **City-by-city lead pulls** — give it a RestaurantJi city URL (e.g. `https://www.restaurantji.com/ny/new-york/`) and it returns every restaurant on that page, paginating automatically.
- ☎️ **The contact fields that matter** — business name, phone, and full street address (street, city, state, ZIP).
- 🍜 **Cuisine & price signals** — cuisine tags (`Thai`, `Italian`, `Cocktail Bar`…) and price band (`$`–`$$$$`) to segment your list.
- ⭐ **Reputation at a glance** — star rating and review count per restaurant.
- 🔎 **Keyword filter** — keep only leads whose name or cuisine matches (e.g. `pizza`, `bar`, `vegan`).
- 🌐 **Optional website enrichment** — turn on *Enrich own website* to also grab each restaurant's own site URL.
- 🧱 **Bulk-friendly** — feed many city URLs, or use the States × Cities helper to build them.

### 📊 Output — one flat record per restaurant

| Field | Type | Example |
|---|---|---|
| 🏷️ `name` | text | `Soothr` |
| ☎️ `phone` | text | `(212) 844-9789` |
| 🍜 `cuisine` | array | `["Thai","Noodles","Cocktail Bar"]` |
| 💲 `price_range` | text | `$$` |
| 📍 `street` | text | `204 E 13th St` |
| 🏙️ `city` / `state` / `zip` | text | `New York` / `New York` / `10003` |
| 🌎 `country` | text | `US` |
| ⭐ `rating` | number | `4.7` |
| 🗣️ `review_count` | number | `1249` |
| 🌐 `website` | link | `http://soothrnyc.com/` |
| 🔗 `url` | link | `https://www.restaurantji.com/ny/new-york/soothr-/` |
| 🕒 `scraped_at` | date | `2026-07-07T…Z` |

<details><summary>🍽️ Sample lead record</summary>

```json
{
  "name": "Soothr",
  "phone": "(212) 844-9789",
  "cuisine": ["Thai", "Noodles", "Cocktail Bar"],
  "price_range": "$$",
  "street": "204 E 13th St",
  "city": "New York", "state": "New York", "zip": "10003", "country": "US",
  "rating": 4.7, "review_count": 1249,
  "website": "http://soothrnyc.com/",
  "url": "https://www.restaurantji.com/ny/new-york/soothr-/",
  "scraped_at": "2026-07-07T12:00:00.000Z"
}
```

</details>

> 💡 A single city page already yields ~200 leads. This Actor hands you a flat, deduped JSON record per restaurant — phone, address and cuisine included — ready in minutes.

***

### Who it's for

- 🧾 **POS & online-ordering SaaS** (Toast, SpotOn, and challengers) building geo-targeted prospect lists.
- 🚚 **Delivery & delivery-marketing teams** sourcing restaurants to onboard or pitch.
- 📣 **Marketing & lead-gen agencies** assembling restaurant contact lists by city and cuisine.
- 📊 **Analysts & aggregators** mapping the restaurant landscape (cuisine mix, price bands, ratings) per market.

### How to use it

1. Click **Try for free**.
2. Paste one or more **City listing URLs** (e.g. `https://www.restaurantji.com/ny/new-york/`) — or fill **States** + **Cities** and let it build them.
3. *(Optional)* set a **Keyword filter**, turn on **Enrich own website**, and set **Max results**.
4. Click **Start**. Export from the **Dataset** tab (JSON, CSV, Excel, Google Sheets) or via API.

#### Examples

New York City restaurant leads (first 8):

```json
{ "cityUrls": ["https://www.restaurantji.com/ny/new-york/"], "maxItems": 8 }
```

Thai restaurants only, with their own websites:

```json
{ "cityUrls": ["https://www.restaurantji.com/ny/new-york/"], "keyword": "thai", "includeWebsite": true }
```

Multiple cities via the States × Cities helper:

```json
{ "states": ["ny", "ca"], "cities": ["new-york", "los-angeles"], "maxItems": 500 }
```

***

### ❓ FAQ

**Do I need a login or API key?** No. It reads RestaurantJi's public listing pages — no account, no key, no captcha.

**How much does it cost?** Pay-per-lead — roughly **$6 per 1,000 leads** returned. A single-city run stays small and cheap, and it's free to try.

**Do I get the restaurant's own website?** Turn on **Enrich own website** and it will pull each restaurant's own site URL from the detail page when present. Phone + address + cuisine already make a sellable lead on their own.

**Which cities are covered?** Any city with a RestaurantJi listing page — paste its URL, or use the States × Cities helper. US coverage, city by city.

**Can I export to Excel or Google Sheets?** Yes — the dataset exports to JSON, CSV, Excel, or Google Sheets, or pull it via API.

### Notes & fair use

You are responsible for complying with RestaurantJi's Terms of Service. This Actor reads publicly available restaurant listings (factual business-contact data only).

# Actor input Schema

## `cityUrls` (type: `array`):

RestaurantJi city listing URLs, e.g. https://www.restaurantji.com/ny/new-york/ . Each yields ~200 restaurant leads. Add as many cities as you like.

## `states` (type: `array`):

Optional. 2-letter state codes (e.g. "ny", "ca"). Combined with Cities below to build /{state}/{city}/ URLs — an alternative to pasting full City URLs.

## `cities` (type: `array`):

Optional. City slugs (e.g. "new-york", "los-angeles"). Paired with the States above to build listing URLs.

## `keyword` (type: `string`):

Optional. Keep only leads whose name or cuisine contains this text (case-insensitive), e.g. "thai", "pizza", "bar".

## `includeWebsite` (type: `boolean`):

Attempt to pull each restaurant's own website URL from the detail page (adds a fetch per lead).

## `maxItems` (type: `integer`):

Cap on leads returned this run (cost/speed guard). Default 100; set 0 for everything in scope.

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

Proxy settings. RestaurantJi has no anti-bot, so Apify datacenter proxy is fine.

## `requestConcurrency` (type: `integer`):

Max parallel detail-page requests. Higher = faster; keep modest to respect the site.

## Actor input object example

```json
{
  "cityUrls": [
    "https://www.restaurantji.com/ny/new-york/"
  ],
  "includeWebsite": false,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "requestConcurrency": 6
}
```

# Actor output Schema

## `records` (type: `string`):

The dataset of scraped restaurant leads (one item per restaurant).

# 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 = {
    "cityUrls": [
        "https://www.restaurantji.com/ny/new-york/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/restaurantji-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 = { "cityUrls": ["https://www.restaurantji.com/ny/new-york/"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/restaurantji-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 '{
  "cityUrls": [
    "https://www.restaurantji.com/ny/new-york/"
  ]
}' |
apify call scrapersdelight/restaurantji-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/mzGqONZPMM97d97qe/builds/s04T8hiTyDa6K3u20/openapi.json
