# Justdial Business Leads - Owners, Real Phone, Email (`factden/justdial-business-leads`) Actor

Scrape complete Justdial Indian business leads by city and category - every business. Real phone(not virtual numbers) (including paid advertisers), address, area, pincode, GPS, rating & GST.

- **URL**: https://apify.com/factden/justdial-business-leads.md
- **Developed by:** [Factden](https://apify.com/factden) (community)
- **Categories:** Lead generation, Automation, AI
- **Features:** Limited permissions
- **Stats:** 11 total users, 2 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $10.00 / 1,000 enriched lead (real phone, email, owner, whatsapp)s

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

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

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## Justdial Business Leads

**Justdial Business Leads** gives you ready-to-use **Indian business leads** — company name, **phone, email,
owner name, WhatsApp and GST** — from [Justdial](https://www.justdial.com) listings across **every category and
1,600+ cities**. Pick a city or whole state and one or more categories, and get a clean, deduplicated list to
export to Excel, CSV, Google Sheets or JSON.

Built for **B2B lead generation, sales prospecting, market research and local outreach** across India.

> ⭐ **Found this useful?** Please rate and bookmark the actor — it helps other people find it.

**▶ Watch the 90-second walkthrough:** https://www.youtube.com/watch?v=rp_axXqSd2I

### What you get

- **Phone, email, owner name and WhatsApp** — the fields you actually need for outreach.
- **GST number** plus firmographics (legal name, year established, employee count, turnover).
- **All contacts, not just one:** `allPhones`, `allEmails` and `allContactPersons` return every phone, email and
  named contact a business lists.
- **Full address broken out** (area, city, pincode), **GPS coordinates**, and **rating + review count**.
- **Two modes:** a fast, cheap **Discovery** mode (listings only) and the full **Enriched leads** mode (all
  contact + firmographic data). One toggle, one price per run.
- **Target by city or whole state × category**, or paste a Justdial business URL to fetch it directly.
- Runs on **Apify** with scheduling, API access, integrations and monitoring — no login or API key to manage.

<img src="https://raw.githubusercontent.com/factden/apify-actor-assets/main/justdial-business-leads/02-business-leads-overview.png" alt="Justdial Business Leads output table with phone, WhatsApp, owner name and role, email and GST for each business" width="900">

#### What data can I get?

| Field | Description |
|---|---|
| `name` | Business name |
| `category`, `subcategory` | Business category and finer type |
| `listingType` | Free or Paid (advertiser) listing |
| `phone` | Primary phone number |
| `whatsapp` | WhatsApp number when listed |
| `allPhones` | Every phone number on the listing |
| `email` | Primary email (when available) |
| `allEmails` | Every email on the listing |
| `contactPerson` | Owner / contact person (role, when known, is included in the name) |
| `allContactPersons` | Every named contact with role |
| `website` | Business website |
| `gstNumber` | GST number, when available |
| `legalName`, `yearEstablished`, `employeeCount`, `turnover` | Firmographics, when available |
| `address`, `area`, `city`, `pincode` | Full address, broken out |
| `latitude`, `longitude` | GPS coordinates |
| `rating`, `reviewCount` | Star rating and number of reviews |
| `paidStatus`, `verified` | Whether it is a paid advertiser, and whether it is marked verified |
| `businessUrl` | Link back to the Justdial profile |
| `scrapedAt` | Timestamp (ISO 8601) |

Contact and firmographic fields are returned in **Enriched leads** mode. **Discovery** mode returns the listing
fields only, at a lower price.

### How to use it

1. Under **States** or **Cities**, pick one or more locations from the list (every city is labelled with its
   state).
2. Under **Categories**, pick one or more business types from the list (Restaurants, Gyms, Dentists, Apparel,
   Grocery and 280+ more).
3. Turn **🔓 Enrich with real phone, email, owner & WhatsApp** ON for full leads. It is OFF by default, which
   gives a cheaper Discovery listing.
4. Set **Max businesses** (default 100) and click **Start**. Export to **Excel, CSV, Google Sheets or JSON** from
   the Output tab.

**Handy recipes:** Restaurants in Mumbai · Dentists across all of Maharashtra · a multi-category prospecting run
(`Gyms`, `Salons`, `Spas` together) · or paste a Justdial business URL to fetch that exact business.

### Pricing

Two modes, each billed **per business row** (pay-per-result, no monthly fee). You are charged for exactly one of
the two, chosen by the Enrich toggle — never both:

- **🔓 Enriched leads** (toggle on): the full lead — phone, email, owner, WhatsApp, GST and firmographics plus all
  listing data. **$0.10 per verified lead ($100 / 1,000) on the Free plan**, dropping to **$0.01 ($10 / 1,000) on
  paid Apify plans**.
- **🗺️ Discovery** (default): listings only (name, category, address, GPS, rating, reviews). **$0.01 per listing
  ($10 / 1,000) on the Free plan**, dropping to **$0.002 ($2 / 1,000) on paid Apify plans**.
- **Actor start:** a flat **$0.005** per run.

Paid Apify plans unlock the low rates above; the Free plan is priced higher. See the **Pricing** tab for the full
per-plan table.

**Worked example:** 5,000 enriched restaurant leads across Mumbai and Delhi runs about **$50–$100 on paid plans**
(Gold+ to Bronze) or **~$500 on the Free plan**, still a fraction of buying or hand-collecting the same list. The
same 5,000 as a Discovery map runs **$10–$20 on paid plans** or **~$50 on the Free plan**.

### Input and output example

**Input:**

```json
{
  "cities": ["Mumbai"],
  "categories": ["Restaurants"],
  "contactableOnly": true,
  "maxItems": 1000
}
```

**Output (one enriched lead):**

```json
{
  "name": "Kanchan Veg",
  "category": "Restaurants",
  "listingType": "Paid",
  "phone": "9673410606",
  "whatsapp": "9673410606",
  "allPhones": ["9673410606"],
  "email": "owner@example.com",
  "allEmails": ["owner@example.com"],
  "contactPerson": "Mr Prashad Kanchan (Proprietor)",
  "allContactPersons": ["Mr Prashad Kanchan (Proprietor)"],
  "gstNumber": "27ABCDE1234F1Z5",
  "website": null,
  "area": "Yavat",
  "city": "Pune",
  "pincode": "412214",
  "latitude": 18.51,
  "longitude": 74.20,
  "rating": 4.3,
  "reviewCount": 14419,
  "businessUrl": "https://www.justdial.com/Pune/..."
}
```

Download the dataset in **JSON, CSV, Excel or HTML**, or pull it via the Apify API into Google Sheets, a CRM, or
your outreach tool.

Every lead also comes as an **LLM-ready markdown field** (`markdownContent`) for RAG pipelines and AI agents:

<img src="https://raw.githubusercontent.com/factden/apify-actor-assets/main/justdial-business-leads/03-ai-ingest-markdown.png" alt="AI-ingest (LLM-ready) view: each lead rendered as clean markdown with phone, email, owner and GST for RAG and AI agents" width="900">

### Other FactDen data scrapers you might like

| Actor | What it does |
|---|---|
| [MCA India Company and Director Data Scraper](https://apify.com/factden/mca-company-director-scraper) | Company and director records with email and phone leads from India's MCA registry |
| [Indeed Jobs Scraper](https://apify.com/factden/indeed-jobs-scraper) | Jobs, salaries, filters and company data from Indeed |
| [G2 Software Reviews Scraper](https://apify.com/factden/g2-reviews-scraper) | B2B software reviews, battlecards and switching data |

### FAQ

#### Is it legal to collect Justdial business data?

This actor works only with **publicly available business-listing information**, with no login-only or
authenticated content. Business contact details published on a directory are generally public information, but
**how you use them is your responsibility**: comply with Justdial's Terms, India's **DPDP Act**, and (where
relevant) GDPR / CCPA, honour **DND and do-not-contact** requests, and have a lawful basis for outreach. See
Apify's guide on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

#### Do I get the owner name, email and website — not just the phone?

Yes, in **Enriched leads** mode, when the business has them on file. You get the owner / contact-person name and
role, email, WhatsApp and website, plus **`allEmails`, `allPhones` and `allContactPersons`** so you capture every
contact a business lists, not just the first.

#### What is the difference between Discovery and Enriched leads?

**Enriched leads** returns the full record — phone, email, owner, WhatsApp, GST and firmographics. **Discovery**
returns just the listing (name, address, GPS, rating, reviews) at a much lower price, which is ideal for market
mapping and counting.

#### How do I get a specific city and category (for example Restaurants in Mumbai)?

Pick the city (or a whole state) and the category from the lists, then run it. To go more targeted, paste a
Justdial **business URL** into Start URLs and the actor fetches exactly that business.

#### Which cities and categories are covered?

**1,600+ Indian cities** (grouped by state) and **280+ business categories** — the input lists every valid value,
so you only ever pick options that return data.

#### What formats can I export to?

JSON, CSV, Excel and HTML from the Output tab, or via the Apify API into Google Sheets, Airtable, a CRM, or your
calling / WhatsApp tool.

#### Can I use this with the Apify API or an MCP server?

Yes. Run it via the **Apify API / SDK** (Python or JavaScript) or a scheduled task, and it is usable by **AI
agents through an MCP server**. The input schema is fully described, so an agent can run it with just a city and a
category.

### 🤖 For AI agents & LLM apps

This actor returns India business leads (phone, owner, email, WhatsApp, GST) via the **Apify API** or an **MCP
server**. Minimal call:

```json
{ "cities": ["Mumbai"], "categories": ["Restaurants"], "contactableOnly": true }
```

**Key output fields:** `name`, `phone`, `contactPerson`, `email`, `whatsapp`, `gstNumber`, `pincode`,
`latitude`/`longitude`, `rating`. Every lead also ships as an LLM-ready `markdownContent` field for RAG and agents.

**Behaviors an agent should know:**

- A run with only `cities` + `categories` works. `contactableOnly` defaults to **off** (cheap Discovery); set it
  `true` for the full lead with phone, owner, email, WhatsApp and GST.
- `maxItems` caps the result count (default 100).
- Billing is **one event per business** — a Discovery listing or an Enriched lead — plus a flat $0.005 actor start.

### Disclaimer

This actor works only with publicly available business-listing information. It does not access private,
login-gated, or authenticated content. You are responsible for ensuring your use of the data complies with
Justdial's Terms of Service and applicable data-protection and anti-spam laws (India's DPDP Act, GDPR, CCPA, TRAI
DND regulations), including honouring opt-out and do-not-contact requests.

### Support and feedback

Found a bug or need an extra field, category, or region? Open an issue on the **Issues** tab. We read every one
and ship fixes fast. Custom or higher-volume builds are available on request.

### Changelog

- **2026-09-26** City and category pickers now list only values that have data, so every selection returns
  results. Added GST and firmographics (legal name, year, employees, turnover) to Enriched leads. Faster runs.
- **2026-09-24** Two modes: cheap Discovery (listings) and full Enriched leads (phone, email, owner, WhatsApp),
  one price per run. Added `listingType` and `allPhones` / `allEmails` / `allContactPersons`.

***

**Common searches:** justdial business leads · justdial phone number · justdial email · india business directory ·
b2b lead generation india · local business leads india · indian business data · justdial contractors · justdial
restaurants leads

# Actor input Schema

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

Pick one or more states to pull businesses from EVERY city in them. Combine with, or use instead of, Cities.

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

Pick one or more specific cities (labelled with their state). Only cities that have data are listed.

## `categories` (type: `array`):

Pick one or more business categories. Only categories that have data are listed.

## `contactableOnly` (type: `boolean`):

📞 Real phone · 👤 Owner · ✉️ Email · 💬 WhatsApp · 🧾 GST. Off = Discovery listings only, cheaper.

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

Maximum number of business leads to return across all selected cities/categories.

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

Paste Justdial business (\_BZDET) URLs to fetch those exact businesses directly.

## Actor input object example

```json
{
  "states": [],
  "cities": [],
  "categories": [
    "Restaurants"
  ],
  "contactableOnly": false,
  "maxItems": 100,
  "startUrls": []
}
```

# Actor output Schema

## `leads` (type: `string`):

No description

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "categories": [
        "Restaurants"
    ],
    "maxItems": 100,
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("factden/justdial-business-leads").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 = {
    "categories": ["Restaurants"],
    "maxItems": 100,
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("factden/justdial-business-leads").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 '{
  "categories": [
    "Restaurants"
  ],
  "maxItems": 100,
  "startUrls": []
}' |
apify call factden/justdial-business-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,factden/justdial-business-leads"
        }
    }
}
```

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/o8HcM4WGR05zJTMWI/builds/ooKrbiadTdCmMwwrC/openapi.json
