# Justdial Business Scraper - Phone, Email, WhatsApp & Address (`scrapersdelight/justdial-scraper`) Actor

Scrape Justdial business listings by category + city, locality, Justdial URL or business id: phone, WhatsApp, email, website, contact person, full address with PIN code and GPS, rating, hours, year established, categories, services and latest reviews. No login.

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

## Pricing

$1.60 / 1,000 per justdial businesses

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

### What does Justdial Business Scraper do?

**Justdial Business Scraper** turns Justdial (justdial.com), India's largest local business directory, into a clean lead list. Search by **category + city** (and locality), paste **Justdial category or business URLs**, or give **business ids** — and get one row per business with its phone, WhatsApp, email, website, contact person, full address with PIN code and GPS, rating, hours, year established, categories, services, payment modes and latest reviews.

Also searched as: Justdial scraper · Justdial leads extractor · Justdial phone number extractor · Justdial data scraper · India business directory scraper.

- **Contact-ready rows** — phone, WhatsApp and email on most rows (measured below), plus the owner / contact person and their role.
- **Full profile in the same row** — complete address split into building, street, landmark, locality, city, state, PIN code and coordinates; weekday hours; year established; services; payment modes; attributes; photos; the latest reviews.
- **Three ways in, mixed freely** — category + city (+ locality), Justdial URLs, or business ids.
- **Deeper than one search** — Justdial serves about 100 businesses per category and city; split the city into its busiest localities and the actor merges them, one row per business.
- **Exact paging** — every page is requested by Justdial's own business ids, so no business is repeated or skipped.
- **Monitoring** — on a schedule, deliver only businesses an earlier run did not.
- **No login, no cookies, no browser.** Results in JSON, CSV, Excel, or via the API.

### What data can you get from Justdial?

| | | |
|---|---|---|
| 🏢 Business name `name` | 📞 Phone `phone`, `phones` | 💬 WhatsApp `whatsapp` |
| ✉️ Email `email` | 🌐 Website `website` | 🔗 Social links `socialLinks` |
| 👤 Contact person + role `contactPerson`, `contactPersons` | 📍 Full address `address` | 🏠 Building / street / landmark |
| 🗺️ Locality, city, state `area`, `city`, `state` | 📮 PIN code `pincode` | 🧭 GPS `latitude`, `longitude` |
| 🏷️ Category + all categories `category`, `categories` | 🛠️ Services `services` | ⭐ Rating + ratings `rating`, `ratingCount` |
| ✅ Verified / JD Verified / JD Trust | 📅 Year established `yearEstablished` | 🕘 Weekday hours `workingHours` |
| 💳 Payment modes `paymentModes` | 🧾 GST verified badge `gstVerified` | 🎓 Attributes (specialisation, qualification…) |
| 🖼️ Photos `photoCount`, `images` | 📝 Description `description` | 💭 Latest reviews `latestReviews` |
| 🔢 Justdial id + link `docId`, `url`, `shortUrl` | 🏁 Rank in the search `position` | 🔎 Search term, city, locality |

### How to scrape Justdial with Justdial Business Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) — it comes with free monthly credit.
2. Open **Justdial Business Scraper** and type one or more categories (e.g. `Dentists`) and cities (e.g. `Mumbai`).
3. Optionally add localities, Justdial URLs or business ids, filters, and a result cap.
4. Click **Start**. The first rows arrive within seconds.
5. Download the results as JSON, CSV or Excel, or read them through the Apify API.

### ⬇️ Input

| Parameter | Type | Default | Description |
|---|---|---|---|
| **What to scrape** | | | |
| `searchTerms` | array | — | Categories or keywords as you would type them in Justdial, e.g. `Dentists`, `Interior Designers`, `Packers And Movers`. A business name works too. |
| `cities` | array | Mumbai | Indian cities, e.g. `Delhi`, `Bangalore` / `Bengaluru`, `Pune`, `Hyderabad`. Every term is searched in every city. |
| `startUrls` | array | — | Justdial category pages (with or without `/nct-…`, or `…-in-<Locality>`) and business pages ending in `_BZDET`. |
| `businessIds` | array | — | Justdial business ids (the code before `_BZDET`), e.g. `022P5902892`. |
| **Where in the city** | | | |
| `areas` | array | — | Search only these localities, e.g. `Andheri West`, `Koramangala`. |
| `splitCityByAreas` | boolean | false | Also search each city's busiest localities (up to 15) and merge them. |
| `maxAreasPerCity` | integer | 15 | How many localities the split uses (1-15). |
| **Refine results** (never charged when removed) | | | |
| `requirePhone` / `requireEmail` / `requireWebsite` | boolean | false | Keep only businesses that show a phone / email / website. |
| `verifiedOnly` | boolean | false | Keep only Verified or JD Verified businesses. |
| `minRating` / `minReviews` | number | 0 | Minimum Justdial rating (0-5) / number of ratings. |
| **Extra data** | | | |
| `scrapeDetails` | boolean | true | Add each business's profile (email, website, WhatsApp, contact person, full address, hours, year, services, payment modes, reviews). Off = listing fields only, faster. |
| `maxReviewsPerBusiness` | integer | 3 | Latest reviews kept per business (0-10). |
| **Monitoring** | | | |
| `monitorMode` | boolean | false | Deliver only businesses no earlier run with the same store delivered. |
| `monitorStoreName` | string | justdial-monitor | The store that remembers delivered businesses (one per watch list). |
| **Output** | | | |
| `maxResults` | integer | 100 | Stop after this many businesses (0 = no limit). |
| `maxResultsPerSearch` | integer | 0 | Cap each category × city × locality search (0 = all Justdial serves). |
| **Advanced** | | | |
| `proxyConfiguration` | object | direct | Leave as is; add your own proxy URLs to use them first. |
| `residentialOnBlock` | boolean | true | When Justdial refuses the run's IP, continue through residential India (included in the price). |
| `maxConcurrency` | integer | 6 | Parallel requests (1-12). |

#### Input JSON

```json
{
  "searchTerms": ["Dentists", "Chartered Accountants"],
  "cities": ["Mumbai", "Pune"],
  "areas": ["Andheri West"],
  "requirePhone": true,
  "maxResults": 200
}
```

#### Type the category the way Justdial's search box would

Justdial resolves free text to its own category ("Interior Designers" → Justdial category 10272436), so plain words work. Use `startUrls` when you already have a Justdial page open — its category id and locality are taken from the link.

#### Spell localities the way Justdial does

`Andheri West`, `Koramangala`, `Connaught Place`. Case does not matter. A locality Justdial does not recognise is answered city-wide by Justdial, so the actor skips that search (nothing charged) and says so in the log and the run summary.

#### Need more than ~100 businesses for one category and city?

Justdial lists about 100 businesses per category × city. Turn on `splitCityByAreas`, or list localities in `areas`: each locality is its own search (Justdial serves 227-377 per locality), and the actor merges them with one row per business. Measured: Dentists in Mumbai = 100 city-wide; with the city plus its 15 busiest localities, 962 different businesses.

### ⬆️ Output

One item per Justdial business. A real row from a run (Packers And Movers · Delhi), shortened:

```json
{
  "docId": "011PXX11.XX11.141014180725.H2U2",
  "name": "Suryansh Packers & Movers",
  "url": "https://www.justdial.com/Ghaziabad/Suryansh-Packers-Movers-Near-Naveen-Hospital-Vaishali-Sector-3/011PXX11-XX11-141014180725-H2U2_BZDET",
  "phone": "+918123792156",
  "whatsapp": "+919711631739",
  "email": "hirdeshsinghpal219@gmail.com",
  "website": "https://suryanshpackersmovers.in/",
  "contactPersons": [{ "name": "Mr Hirdesh Singh", "role": "Owner" }, { "name": "Mr Hirdesh", "role": "Director" }],
  "address": "House Number -3F/91, Vaishali, Near Naveen Hospital, Naveen Hospital, Vaishali Sector 3, Ghaziabad-201012, Uttar Pradesh",
  "area": "Vaishali Sector 3", "city": "Ghaziabad", "state": "Uttar Pradesh", "pincode": "201012",
  "latitude": 28.641492405479, "longitude": 77.337760117716,
  "category": "Packers And Movers",
  "categories": ["Packers And Movers", "Packers And Movers (Within City)", "Packers And Movers (All India)"],
  "rating": 4.8, "ratingCount": 479, "verified": true, "yearEstablished": 2009,
  "workingHours": [{ "day": "Mon", "hours": "7:00 am - 9:00 am" }, { "day": "Tue", "hours": "7:00 am - 9:00 am" }],
  "paymentModes": ["Cash", "UPI", "American Express", "Paytm", "PhonePe", "Amazon Pay", "Visa / Master Card / Rupay"],
  "services": ["Warehousing", "Two Wheeler Transportation", "Storage"],
  "latestReviews": [{ "author": "Mr G S Choudhary", "rating": 5, "date": "12th August, 2026", "text": "I had a great experience with Suryansh Packers and Movers. …" }],
  "position": 1, "searchTerm": "Packers And Movers", "searchCity": "Delhi"
}
```

#### Fields and how often they are filled

Measured on three real runs with full details on: **A** = Furniture Contractors · Mumbai, top 100 · **B** = 4 categories × Delhi, Jaipur, Bangalore, top 8 each (96 rows) · **C** = 25 B2B and healthcare searches across 5 cities, top 2 each (50 rows).

| Field | Meaning | A | B | C |
|---|---|---|---|---|
| `phone`, `phones` | The number(s) Justdial shows, as +91… | 99% | 100% | 90% |
| `whatsapp` | WhatsApp number | 100% | 99% | 98% |
| `email` | Email on the profile | 84% | 86% | 76% |
| `website` | The business's own website link | 23% | 61% | 58% |
| `contactPerson`, `contactPersonRole`, `contactPersons` | Owner / contact person and role | 100% | 100% | 94% |
| `address`, `area`, `city`, `state`, `pincode`, `latitude`, `longitude` | Location | 100% | 100% | 100% |
| `building`, `street`, `landmark` | Address parts | 89-94% | 81-85% | 82-92% |
| `category`, `categories` | Main category, all listed categories | 100% | 100% | 100% |
| `rating`, `ratingCount` | Justdial rating 0-5, number of ratings | 99% | 95% | 100% |
| `verified`, `jdVerified`, `jdTrust` | Justdial's badges (true/false) | 100% | 100% | 100% |
| `yearEstablished`, `experience` | Year established, "N Years in Business" | 97% | 97% | 94% |
| `workingHours`, `hoursText`, `openStatus` | Mon-Sun hours, Justdial's hours line, open-now line | 100% | 97% | 100% |
| `services` | Services listed | 89% | 77% | 42% |
| `paymentModes` | Payment modes accepted | 69% | 85% | 72% |
| `latestReviews` | Latest reviews (author, rating, date, text) | 89% | 89% | 90% |
| `description` | The business's own one-line description | 15% | 40% | 64% |
| `tags` | Justdial tags (Top rated, Trending…) | 66% | 74% | 86% |
| `attributes`, `consultationFee` | Specialisation / qualification / registration / fee (mostly doctors) | 10% | 15% | 8% |
| `gstVerified` | Justdial's "GST number verified" badge | 2% | 6% | 22% |
| `socialLinks` | Facebook / Instagram / … | 0% | 0% | 0% (30% in a Dentists · Mumbai run) |
| `photoCount`, `thumbnail`, `images` | Photos | 100% | 100% | 100% |
| `docId`, `url`, `shortUrl`, `position`, `searchTerm`, `searchCity`, `searchArea`, `paidStatus`, `detailsFetched`, `scrapedAt` | Ids, links, rank, the search the row came from, Justdial's listing-tier code | 100% | 100% | 100% |

Contact fields are richest at the top of a search: in a 962-business Dentists · Mumbai run (city + 15 localities), the first 200 rows had a phone on 100%, the deeper locality rows on far fewer (24% overall), while WhatsApp stayed at 80% overall. Use `requirePhone` to keep only businesses with a phone; filtered rows are not charged.

Not delivered: the **GST number itself** (Justdial's data carries only the "GST verified" badge), and Justdial's star-rating breakdown.

### Use cases

- 📞 **Sales teams** — build call and WhatsApp lists for any trade in any Indian city.
- 🏙️ **Local marketing agencies** — map every competitor in a category and locality with ratings and reviews.
- 📊 **Market researchers** — count businesses, ratings and years in business by city and locality.
- 🗂️ **Directory and data products** — seed or refresh an Indian local-business database with Justdial ids as the key.
- 🛰️ **Monitoring** — schedule a weekly run with `monitorMode` to catch new listings in a category.

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

You pay **$0.0016 per business** ($1.60 per 1,000), details included, and nothing else: no start fee, no charge for a search that finds nothing, an unknown id, a business your filters remove, a repeat, or anything Justdial refused.

| Businesses | Cost |
|---|---|
| 10 | $0.016 |
| 100 | $0.16 |
| 1,000 | $1.60 |

### Integrations, API, scheduling & MCP

- **Schedules** — run daily or weekly from the Schedules tab; pair with `monitorMode` for new businesses only.
- **API** — start runs and read datasets with the [Apify API](https://docs.apify.com/api/v2) or the [Python](https://docs.apify.com/api/client/python) and [JavaScript](https://docs.apify.com/api/client/js) clients.
- **No-code** — Make, Zapier, n8n, Google Sheets and Slack integrations; webhooks on run finish.
- **AI agents** — call it through the [Apify MCP server](https://mcp.apify.com).

### More business-lead scrapers

- [Local Business Contact Enricher](https://apify.com/scrapersdelight/local-business-enricher) — find the decision maker's name, role and email for a business website (use it on the `website` column).
- [Free Email & Contact Scraper](https://apify.com/scrapersdelight/local-business-lead-scraper) — extract emails and phones from any website.
- [Google Maps Polygon Scraper](https://apify.com/scrapersdelight/google-maps-polygon-scraper) — businesses inside a drawn map area.
- [Yellowpages-UAE Scraper](https://apify.com/scrapersdelight/yellowpages-uae-scraper) — UAE business directory leads.
- All our actors: [apify.com/scrapersdelight](https://apify.com/scrapersdelight)

### Limits & empty runs

- Justdial serves about **100 businesses per category × city** (227-377 per locality). Use localities or `splitCityByAreas` to go deeper.
- A search Justdial does not recognise, an unknown city, or an unknown business id returns nothing and costs nothing; the run summary (`RUN_SUMMARY` in the key-value store) lists every search with its status and counts.
- Phones are the numbers Justdial displays; some listings show only a WhatsApp number or none (see the fill table).
- If Justdial refuses a single profile after retries, that business arrives with its listing fields and `detailsFetched: false` (counted as `rowsWithoutDetails` in the run summary). With `requireEmail` / `requireWebsite` such a business is skipped instead, uncharged.
- If Justdial refuses every request of a run, the run ends as failed with nothing charged — run it again.

### ❓ FAQ

#### How much does Justdial Business Scraper cost?

$0.0016 per business, with full details included. There is no start fee; empty searches, filtered businesses and repeats are free.

#### How many businesses can Justdial Business Scraper get per search?

About 100 per category and city, which is what Justdial serves. Each locality is a separate search with up to a few hundred more; `splitCityByAreas` merges the city's 15 busiest localities automatically.

#### Can I get phone numbers and emails with Justdial Business Scraper?

Yes. On the measured runs above, 90-100% of rows had a phone, 98-100% a WhatsApp number and 76-86% an email. Use `requirePhone`, `requireEmail` or `requireWebsite` to keep only those rows.

#### Can I scrape a specific locality with Justdial Business Scraper?

Yes. Put localities in `areas` (e.g. `Andheri West`) or paste a Justdial URL such as `https://www.justdial.com/Mumbai/Dentists-in-Andheri-West/nct-10156331`.

#### Is the phone in Justdial Business Scraper the business's own number?

It is the number Justdial displays on the listing — Justdial's own data calls it `VNumber` (virtual number). On the measured rows the phones cluster in a few number ranges (84604…, 84602…, 90350…) while the WhatsApp numbers are all different and matched the phone on only 2 of 246 rows. For the owner's own mobile, use `whatsapp`.

#### Can I paste Justdial links or business ids into Justdial Business Scraper?

Yes. Category pages are paged automatically; business pages (`…_BZDET`) and ids return one row each with full details.

#### Can Justdial Business Scraper run on a schedule and send only new businesses?

Yes. Schedule it and turn on `monitorMode`; each run delivers and charges only businesses earlier runs with the same `monitorStoreName` did not deliver.

#### Can I use Justdial Business Scraper through the Apify API or MCP?

Yes — start it with the Apify API or a client library, or call it from an AI agent via the Apify MCP server. Results come back as a dataset.

#### Do I need a Justdial account, login or API key for Justdial Business Scraper?

No. It reads Justdial's public listings and profiles; nothing to log in to.

#### Why did my Justdial Business Scraper run return no results?

The search, city or locality was not recognised by Justdial (the run summary shows each search's status), your filters removed everything, or Justdial refused the run's requests (then the run is marked failed and nothing is charged).

#### Your feedback

Found a bug or need a field? Open an issue on the actor's **Issues** tab and we will look at it.

# Actor input Schema

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

What you would type in Justdial's search box, one per line, e.g. "Dentists", "Interior Designers", "Packers And Movers", "Chartered Accountants". A business name works too. Each one is searched in every city below.

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

Indian cities to search, e.g. "Mumbai", "Delhi", "Bangalore" (or "Bengaluru"), "Pune", "Hyderabad", "Jaipur". Empty with a category = Mumbai.

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

Category pages ("https://www.justdial.com/Mumbai/Dentists/nct-10156331", with or without the /nct- part, or ".../Dentists-in-Andheri-West") and business pages ending in \_BZDET. Category pages are paged automatically.

## `businessIds` (type: `array`):

Justdial business ids (the code before \_BZDET in a business link), e.g. "022PXX22.XX22.120526135607.C8Y3" or "022P5902892". One row each, with full details.

## `areas` (type: `array`):

Search only these localities of each city, spelled as on Justdial, e.g. "Andheri West", "Koramangala", "Connaught Place". Each category × city × locality is its own search. A locality Justdial does not know is skipped, not charged.

## `splitCityByAreas` (type: `boolean`):

Also run every category in the city's most-searched localities (Justdial's own list, up to 15) and merge them, one row per business. Measured: Dentists in Mumbai = 100 city-wide, 963 unique with the split.

## `maxAreasPerCity` (type: `integer`):

How many of the city's most-searched localities the split uses (1-15).

## `requirePhone` (type: `boolean`):

Skip listings that show no phone number.

## `requireEmail` (type: `boolean`):

Keep a business only when its Justdial profile lists an email address (needs the details call).

## `requireWebsite` (type: `boolean`):

Keep a business only when its Justdial profile links its own website (needs the details call).

## `verifiedOnly` (type: `boolean`):

Keep a business only when Justdial marks it Verified or JD Verified.

## `minRating` (type: `number`):

Keep businesses rated at least this on Justdial's 0-5 scale, e.g. 4 or 4.5. 0 = off (unrated businesses are kept).

## `minReviews` (type: `integer`):

Keep businesses with at least this many Justdial ratings, e.g. 50. 0 = off.

## `scrapeDetails` (type: `boolean`):

Add each business's profile: email, website, WhatsApp, contact person, full address with building / street / landmark, year established, weekday hours, services, payment modes, attributes, photos and latest reviews. Off = the listing fields only (faster).

## `maxReviewsPerBusiness` (type: `integer`):

How many of the latest reviews the profile carries to keep on each row (author, rating, date, text). Justdial's profile carries up to a few; 0 = none.

## `monitorMode` (type: `boolean`):

Skip every business an earlier run with the same monitor store already delivered. Good for catching new listings in a category and city.

## `monitorStoreName` (type: `string`):

Name of the key-value store that remembers delivered businesses. Use one name per watch list, e.g. "dentists-mumbai".

## `maxResults` (type: `integer`):

Stop after this many businesses in the whole run (each is one charged row). 0 = no limit. Justdial serves up to about 100 per category × city, more per locality.

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

Cap each category × city × locality search separately, e.g. 20 to sample many cities evenly. 0 = everything Justdial serves.

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

Leave as is: requests go direct and automatically switch to residential India when Justdial refuses an IP. Your own proxy URLs are used first if you add them.

## `residentialOnBlock` (type: `boolean`):

When Justdial refuses the run's own IP, continue through Apify residential proxies in India (included in the price). Off = direct only.

## `maxConcurrency` (type: `integer`):

How many Justdial requests run at once (1-12).

## Actor input object example

```json
{
  "searchTerms": [
    "Dentists"
  ],
  "cities": [
    "Mumbai"
  ],
  "splitCityByAreas": false,
  "maxAreasPerCity": 15,
  "requirePhone": false,
  "requireEmail": false,
  "requireWebsite": false,
  "verifiedOnly": false,
  "minRating": 0,
  "minReviews": 0,
  "scrapeDetails": true,
  "maxReviewsPerBusiness": 3,
  "monitorMode": false,
  "monitorStoreName": "justdial-monitor",
  "maxResults": 10,
  "maxResultsPerSearch": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "residentialOnBlock": true,
  "maxConcurrency": 6
}
```

# Actor output Schema

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

One item per Justdial business: phones, WhatsApp, email, website, contact person, full address with pincode and GPS, rating, hours, year established, categories, services, payment modes and latest reviews.

## `runSummary` (type: `string`):

Per search: how many businesses Justdial serves and how many were delivered; field fill; and what was not charged (filtered, duplicate, not found, refused).

# 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": [
        "Dentists"
    ],
    "cities": [
        "Mumbai"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/justdial-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": ["Dentists"],
    "cities": ["Mumbai"],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/justdial-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": [
    "Dentists"
  ],
  "cities": [
    "Mumbai"
  ],
  "maxResults": 10
}' |
apify call scrapersdelight/justdial-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/justdial-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/on5ezgiCFF4ZUxv1Y/builds/zB5iIgqfyhnNdIokN/openapi.json
