# Justdial Scraper: Business Leads, Phones & Emails (India) (`parseforge/justdial-scraper`) Actor

Scrape Justdial business listings in any Indian city: phone, WhatsApp, email, contact person, website, GSTIN, address, GPS, hours and reviews. Export to CSV, Excel, JSON or XML.

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

## Pricing

from $10.00 / 1,000 business leads

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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)

## 📞 Justdial Business Leads Scraper

> 🚀 **Export Justdial business leads from any Indian city in seconds.** 43 fields per business: listed phone, WhatsApp, email, owner or contact person, website, GSTIN, full address with GPS, hours and the latest reviews.

This Actor turns any Justdial search into a clean lead list. Type a category such as `Plumbers` or `Chartered Accountants`, pick a city (and optionally a locality), and it reads every business Justdial returns for that search, then opens each business profile to collect the contact block, the address broken into parts, the business details the owner filled in, and the ten most recent reviews.

In our test runs, 22 of 30 plumbers in Delhi and 15 of 17 furniture contractors in Mumbai came back with an email address, every business came back with a contact person, and most carried a WhatsApp number. Justdial covers more than 1,000 Indian cities and thousands of categories, and every search returns up to about 100 businesses.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Sales and lead generation teams selling to Indian SMBs | Build call, email and WhatsApp lists for any trade in any city |
| Local marketing and digital agencies | Find businesses without a website and pitch them one |
| B2B distributors and manufacturers | Map dealers, contractors and retailers by city and area |
| Market researchers | Measure category density, ratings and business age by locality |
| Data and directory products | Seed or refresh a structured Indian business database |

### 📋 What the Justdial Business Leads Scraper does

- Searches Justdial by one or more keywords in a city, optionally narrowed to an area such as `Andheri West` or `Karol Bagh`.
- Resolves each keyword to Justdial's own category, so `Furniture Contractors` becomes the exact category page Justdial serves.
- Collects the full result set of each search (up to about 100 businesses) and removes duplicates across searches.
- Opens every business profile for phone, WhatsApp, email, contact person, legal name, website, GSTIN, employees, turnover, year established, payment modes, social links, services, hours and the latest reviews.
- Accepts Justdial category URLs and business profile URLs (`..._BZDET`) directly, including old-style profile links.

> 💡 **Why it matters:** a Justdial listing page shows a name, a rating and a "Call" button. The lead you actually need, the owner's name, an email, a WhatsApp number and a GST number, sits one click deeper on each profile. This Actor makes that click for every business and hands you one flat row.

### 🎬 Full Demo (🚧 Coming soon)

### 📊 Output

| Field | Description |
|---|---|
| 🖼 `imageUrl` | Main photo of the business |
| 📌 `name` | Business name as shown on Justdial |
| 🔗 `url` | Justdial profile URL |
| 🆔 `docId` | Justdial business ID |
| 🏷 `category` | Primary Justdial category |
| ⭐ `rating` / 🗳 `ratingCount` | Average star rating and number of ratings |
| ✔️ `verified` | Justdial verified badge (`Yes` / `No`) |
| 📞 `phone` | Phone number Justdial publishes on the profile |
| ☎️ `directPhone` | Business's own landline or mobile, when Justdial shows one |
| 💬 `whatsapp` | WhatsApp number from the profile's message button |
| 📧 `email` / `emails` | First email and every email on the profile |
| 🌐 `website` | Website the business listed |
| 👤 `contactPerson` | Owner, proprietor or manager name with role |
| 🏢 `legalName` | Registered business name |
| 📍 `address` | Full postal address |
| 🏬 `building` / 🛣 `street` / 🗿 `landmark` / 🏘 `area` | Address parts |
| 🌆 `city` / 🗺 `state` / 📮 `pincode` | City, state and PIN code |
| 🧭 `latitude` / `longitude` | GPS coordinates |
| 🕐 `openStatus` / 🗓 `workingHours` | Open status at scrape time and hours per day |
| 📅 `yearEstablished` | Year the business started |
| 👥 `employees` / 💰 `turnover` | Size bands the owner reported |
| 🧾 `gstin` | GST identification number, when published |
| 📨 `recentEnquiries` | How many people recently enquired through Justdial |
| 📷 `photoCount` | Number of photos on the profile |
| 🔎 `searchQuery` / #️⃣ `position` | The search that found the business and its rank in the results |
| 🏷 `categories` / 🛠 `services` | Every category the business is listed in and the services it offers |
| 💳 `paymentModes` / 📱 `socialLinks` | Accepted payment methods and social profiles |
| 💬 `latestReviews` | Up to 10 latest reviews: reviewer, rating, date, text |
| 🕒 `scrapedAt` | When the row was collected |
| ❌ `error` | Always `null` on data rows; error rows carry only this field and are never charged |

Values the business did not publish are returned as `Not Disclosed`; `N/A` means the field does not apply. No field is ever `null` except `error`.

#### Sample records

Three real rows from a `Furniture Contractors` search in Mumbai (arrays trimmed for readability).

```json
{
  "imageUrl": "https://content.jdmagicbox.com/v2/comp/thane/m5/022pxx22.xx22.260713000001.j4m5/catalogue/decoreva-projects-bhayandar-east-thane-interior-designers-brkkskb6p4.jpg",
  "name": "Mukesh Suthar",
  "url": "https://www.justdial.com/Thane/Mukesh-Suthar-Near-New-Sai-Ganga-Hospital-Bhayandar-East/022PXX22-XX22-260713000001-J4M5_BZDET",
  "docId": "022PXX22.XX22.260713000001.J4M5",
  "category": "Interior Designers",
  "rating": 5,
  "ratingCount": 22,
  "verified": "Yes",
  "phone": "08460422340",
  "directPhone": "Not Disclosed",
  "whatsapp": "9928674301",
  "email": "info@decorevaprojects.com",
  "website": "Not Disclosed",
  "contactPerson": "Mr Kishor Suthar (Proprietor)",
  "legalName": "Brotlates",
  "address": "F-1 First Floor, Rashmi Swastik Nagar, Near New Sai Ganga Hospital, Navghar Marg, Bhayandar East, Thane-401105, Maharashtra",
  "area": "Bhayandar East",
  "city": "Thane",
  "state": "Maharashtra",
  "pincode": "401105",
  "latitude": 19.3079372,
  "longitude": 72.8630367,
  "yearEstablished": "1995",
  "employees": "Less than 10",
  "turnover": "51 Lakh - 1 Crore",
  "gstin": "27KCIPS1184M1ZR",
  "recentEnquiries": 25,
  "searchQuery": "Furniture Contractors",
  "position": 2,
  "categories": ["Interior Designers", "Civil Contractors", "Carpentry Contractors", "Furniture Contractors"],
  "services": ["Bed", "Cupboard", "Computer Table", "Door", "Sofa"],
  "socialLinks": ["https://www.instagram.com/decoreva_projects"],
  "workingHours": [{ "day": "TUE", "hours": "10:00 am - 7:30 pm" }],
  "scrapedAt": "2026-09-28T22:15:51.298Z",
  "error": null
}
```

```json
{
  "name": "Ansar Furniture Work",
  "docId": "022PXX22.XX22.220528101308.M2A4",
  "category": "Carpenters",
  "rating": 4.5,
  "ratingCount": 12,
  "phone": "09725308904",
  "whatsapp": "9833447786",
  "email": "ansarisiraz1001@gmail.com",
  "contactPerson": "Mr Sirajuddin Ansari(Owner)",
  "legalName": "Ansar Furniture Works",
  "address": "21, FLOOR-0, PREM BUILDING, Near Station, CAM HARBANSLAL ROAD, GTB NGR SION KOLIWADA, Antop Hill, Mumbai-400037, Maharashtra",
  "pincode": "400037",
  "latitude": 19.0323776,
  "longitude": 72.8608408,
  "yearEstablished": "1985",
  "employees": "Less than 10",
  "gstin": "27AIFPA9700N1Z5",
  "recentEnquiries": 117,
  "paymentModes": ["Cash", "UPI", "Net Banking", "Paytm", "PhonePe"],
  "latestReviews": [
    { "reviewer": "Yash", "rating": 5, "date": "28th February, 2023", "text": "I got interiors done for mine and my parents house. The model followed by ansar is very unique..." }
  ]
}
```

```json
{
  "name": "Vishwakarma Furniture",
  "docId": "022PXX22.XX22.200704152200.I2G1",
  "rating": 4.2,
  "ratingCount": 36,
  "phone": "09606421806",
  "whatsapp": "9820873081",
  "email": "deonarayanvishwakarma@gmail.com",
  "website": "https://www.vishwakarmafurnitures.info",
  "contactPerson": "Mr Deonarayan Vishwakarma (Owner),Mr Devnarayan Rambriksh Vishwakarma (Proprietor)",
  "area": "Kandivali West",
  "city": "Mumbai",
  "pincode": "400067",
  "yearEstablished": "1989",
  "gstin": "27AERPV2641D1Z8",
  "socialLinks": ["https://www.instagram.com/vishwakarma_furniture_15"]
}
```

### ✨ Why choose this Actor

- **The owner's name on every row.** `contactPerson` carries the proprietor, director or manager with their role, so your outreach starts with a name, not "Sir/Madam".
- **Email, WhatsApp and phone together.** Three ways to reach each business, plus every extra email listed on the profile in `emails`.
- **GSTIN and business size.** GST number, employee band, turnover band and year established, when the owner published them, for B2B qualification.
- **Address you can map.** Building, street, landmark, area, PIN code, state and GPS coordinates in separate columns.
- **Reviews included.** The ten most recent reviews come with each business at no extra cost.
- **Area targeting.** Add a locality and Justdial ranks the businesses nearest to it first.
- **No login, no cookies.** Everything comes from public Justdial pages.

### 📈 How it compares to alternatives

| | This Actor | Typical Justdial scrapers |
|---|---|---|
| Fields per business | 43 | 10 to 30 |
| Contact person / owner name | Yes, with role | Rarely |
| Email and WhatsApp | Yes, all listed emails | Email only, or add-on billing |
| GSTIN, employees, turnover | Yes, when published | Usually missing |
| Latest reviews in the row | Up to 10 | Separate actor or none |
| Address parts and GPS | Building, street, landmark, area, PIN, state, lat/long | Single address string |
| Input | Keywords + city + area, category URLs, profile URLs | Often URLs only |

Ceiling of the public surface: Justdial serves at most about 100 businesses for one category in one city (a search with an area returns a slightly different set of about 100). To cover more, run several related keywords or several areas of the same city; duplicates across searches are removed automatically. Contact fields appear only when the business published them, and the Actor reports `Not Disclosed` otherwise. The `phone` field is the number Justdial displays on the profile, which is often a Justdial call-tracking number that forwards to the business; `directPhone` and `whatsapp` are the business's own numbers when they are listed.

### 🚀 How to use

1. [Create a free Apify account](https://console.apify.com/sign-up?fpr=vmoqkp) and get $5 of free monthly usage credit.
2. Open the Justdial Business Leads Scraper and click **Try for free**.
3. Type one or more categories or keywords, for example `Furniture Contractors`.
4. Type the city (for example `Mumbai`) and, if you like, an area such as `Andheri West`.
5. Set **Max Items** and click **Start**.
6. Download the dataset as CSV, Excel, JSON or XML, or pull it through the API.

Example: every plumber and electrician Justdial lists around Karol Bagh, Delhi.

```json
{
  "searchTerms": ["Plumbers", "Electricians"],
  "city": "Delhi",
  "area": "Karol Bagh",
  "maxItems": 200
}
```

### 💼 Business use cases

#### Outbound sales to Indian SMBs

Pull every `Chartered Accountants` or `Interior Designers` business in your target cities, then sequence email and WhatsApp outreach using `contactPerson` for personalisation.

#### Website and marketing agencies

Filter rows where `website` is `Not Disclosed` and `ratingCount` is high: established businesses with good reviews and no website are the warmest prospects for a web or SEO pitch.

#### Distribution and dealer mapping

Search `Hardware Shops`, `Paint Dealers` or `Tile Dealers` city by city and plot `latitude` and `longitude` to see where your distribution is thin.

#### B2B qualification

Use `gstin`, `turnover`, `employees` and `yearEstablished` to separate registered, larger and older businesses from one-person operations before you spend sales time.

### 🔌 Automating Justdial Business Leads Scraper

- **Make / Zapier:** run on a schedule and push new leads into Google Sheets, HubSpot, Zoho CRM or Airtable.
- **Slack:** post a message whenever a new business appears in your category and city.
- **Airbyte:** load the dataset into your warehouse for territory analysis.
- **GitHub Actions:** call the Apify API from a workflow to refresh a lead file every week.
- **Google Drive:** export the dataset as Excel after every run.

### 🌟 Beyond business use cases

- **Research:** study how business age, ratings and reviews differ between neighbourhoods of the same city.
- **Personal:** find the best-rated carpenters, doctors or tutors near you with their hours and reviews in one sheet.
- **Non-profit:** map clinics, schools and NGOs by locality for community directories.
- **Experimentation:** feed `latestReviews` into an LLM to score service quality or spot recurring complaints.

### 🤖 Ask an AI assistant about this scraper

> I want a lead list of interior designers in Bangalore from Justdial. Look at the Justdial Business Leads Scraper on the ParseForge Apify page and tell me how to configure a run that covers Koramangala, Indiranagar and Whitefield, and how to keep only businesses with an email and a GSTIN.

### ❓ Frequently Asked Questions

#### 🏙 Which cities are supported?

Any city or town Justdial covers, which is more than 1,000 across India. Type the name as Justdial writes it, for example `Mumbai`, `Delhi`, `Bangalore`, `Pune`, `Hyderabad` or `Navi Mumbai`.

#### 🔢 How many businesses do I get per search?

Up to about 100 per keyword and city, which is everything Justdial exposes for that search. Add areas or related keywords for more; duplicates are removed.

#### 📞 Is the phone number the business's real number?

`phone` is the number Justdial displays. For many businesses it is a Justdial call-tracking number that forwards to them. When the business lists its own number, it is in `directPhone`, and `whatsapp` is the business's own WhatsApp.

#### 📧 Will every row have an email?

No. Emails appear when the business published one on Justdial. In our tests that was 22 of 30 plumbers in Delhi and 15 of 17 furniture contractors in Mumbai. Missing values say `Not Disclosed`.

#### 🧾 What is the GSTIN field?

The business's GST identification number, when the owner added it to the profile. It is useful for B2B qualification and invoicing checks.

#### 🔗 Can I paste Justdial URLs?

Yes. Category pages (`https://www.justdial.com/Mumbai/Furniture-Contractors/nct-10219641`, with or without the `/nct-...` part) return the whole result set, and business profile URLs ending in `_BZDET` return that one business.

#### 📍 What does the area field do?

It sends the search to Justdial's locality page, such as `Plumbers in Karol Bagh`, so the businesses nearest to that area are ranked first.

#### 🔑 Do I need a Justdial account?

No. The Actor reads public pages only, with no login and no cookies.

#### 🛡 Do I need a proxy?

The default Indian residential proxy is set for you. Justdial blocks datacenter IP addresses, so keep the residential proxy on.

#### ⚡ How fast is it?

Each business takes one profile request, fetched several at a time. In our tests, 30 businesses took about 15 seconds.

#### 🧾 What happens on an error?

Errors are written as rows containing only the `error` field so you can see what failed. Error rows are never charged.

#### 💳 How am I charged?

Per business row delivered. Error rows are free.

### 🔌 Integrate with any app

The dataset is available through the Apify API and every Apify integration: Google Sheets, Make, Zapier, Airbyte, Slack, webhooks, and the Apify SDKs for JavaScript and Python.

### 🔗 Recommended Actors

- [IndiaMART Supplier Scraper](https://apify.com/parseforge/indiamart-scraper) for Indian B2B suppliers and manufacturers.
- [Yellow Pages Business Scraper](https://apify.com/parseforge/yellowpages-scraper) for US business listings.
- [India Postal PIN Code Scraper](https://apify.com/parseforge/india-postal-pincode-scraper) to enrich PIN codes with post office and district data.
- [MagicBricks India Property Scraper](https://apify.com/parseforge/magicbricks-india-scraper) for Indian real estate listings.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** this is an independent tool and is not affiliated with, endorsed by, or connected to Justdial Ltd or any business listed on it. It collects only publicly available data.

# Actor input Schema

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

What to search for on Justdial, e.g. `Furniture Contractors`, `Plumbers`, `Chartered Accountants`, `Restaurants`. Each keyword is searched in the city (and area) below and returns up to ~100 businesses.

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

Paste Justdial category listing URLs (`https://www.justdial.com/Mumbai/Furniture-Contractors/nct-10219641`, with or without the `/nct-...` part) and/or business profile URLs ending in `_BZDET`. Listing URLs return every business in the result set, profile URLs return that one business.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `city` (type: `string`):

Indian city to search in, exactly as Justdial writes it, e.g. `Mumbai`, `Delhi`, `Bangalore`, `Pune`, `Hyderabad`, `Chennai`, `Ahmedabad`.

## `area` (type: `string`):

Narrow the search to a locality inside the city, e.g. `Andheri West`, `Connaught Place`, `Koramangala`. Justdial then ranks the businesses closest to that area first.

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

Residential proxy in India is recommended. Datacenter proxies are blocked by Justdial.

## Actor input object example

```json
{
  "searchTerms": [
    "Furniture Contractors"
  ],
  "maxItems": 10,
  "city": "Mumbai",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Key lead fields

## `fullData` (type: `string`):

Complete dataset with all 43 fields

# 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": [
        "Furniture Contractors"
    ],
    "maxItems": 10,
    "city": "Mumbai",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/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": ["Furniture Contractors"],
    "maxItems": 10,
    "city": "Mumbai",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/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": [
    "Furniture Contractors"
  ],
  "maxItems": 10,
  "city": "Mumbai",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}' |
apify call parseforge/justdial-scraper --silent --output-dataset

```

## MCP server setup

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