# Sulekha Scraper 💰 $2/1K | India Business Leads | Phone, City (`ahmed_jasarevic/sulekha-scraper`) Actor

Scrape Sulekha.com business listings by category and city. Get business name, phone, locality, address, Sulekha score, rating, reviews and services for Indian SMB lead generation, local market research and CRM enrichment.

- **URL**: https://apify.com/ahmed_jasarevic/sulekha-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.90 / 1,000 results

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

## Sulekha Scraper — India Business Leads by Category & City

Scrape Sulekha.com — India's largest local-services marketplace — for **business listings by category and city**, including business name, phone number, locality, address, rating and services. Turn Sulekha into a structured **India business leads database** for SMB outreach, local market research and CRM enrichment.

### Main Use Cases

- **India SMB lead generation** — build verified lists of local service businesses (AC repair, plumbers, interior designers, packers & movers) with phone numbers and addresses for outreach.
- **Local market research** — measure how many providers compete in a category for a given city, plus their ratings and review volumes.
- **Competitor & pricing intelligence** — track competing businesses' Sulekha Score, review counts and service line-up across cities.
- **CRM & sales-outreach enrichment** — append locality, address, phone and service data to an existing list of Indian businesses.
- **Directory / marketplace database building** — assemble a clean, city-wise directory of Indian local-service providers.

### How It Works

![How the Sulekha Scraper works: category and city to local business leads with phones, ratings and reviews.](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-sulekha.webp)

Sulekha's category and `/profile/` pages are **server-rendered HTML**, so the data is present in the raw response and no browser is needed. The actor crawls every **category × city** combination you specify, parses the listing cards, and — when enrichment is enabled — fetches each business's `/profile/` page for the full address, star rating, review count, coordinates and images.

Provide categories and cities or explicit category/profile URLs, and each provider becomes one row with contact details, rating, review count and services.

### Scrape Sulekha Business Listings By Category And City

You provide one or more **categories** and one or more **cities**; the actor crawls every combination. Each combination yields the businesses listed in Sulekha's results for that category in that city, paginated until your item cap is reached. You can instead pass explicit **Start URLs** (category listing pages or `/profile/` pages) for full control.

### Build An India Business Leads Database Without An Official API

Sulekha has no public API for retrieving its listings. This actor reads the same publicly available pages a visitor's browser loads and returns clean, structured records — so you can build a business-leads database, run category research, or feed CRM and outreach tools without an API key.

### Input

| Field | Type | Required | Default | Notes |
| --- | --- | --- | --- | --- |
| `categories` | array | no | `["ac-repair-services"]` | Sulekha category slugs (e.g. `ac-repair-services`, `plumbers`, `interior-designers`) or full category URLs. Combined with each city. |
| `cities` | array | no | `["bangalore"]` | Sulekha city slugs (e.g. `bangalore`, `mumbai`, `delhi`, `chennai`, `hyderabad`, `pune`). |
| `startUrls` | array | no | `[]` | Optional. Direct Sulekha category listing URLs or `/profile/` URLs. Use instead of categories + cities for full control. |
| `maxPagesPerCategory` | integer | no | `20` | Safety cap on listing pages crawled per category + city (each page holds ~10–20 businesses). Raised automatically if needed to reach `maxItems`. |
| `maxItems` | integer | no | `100` | Maximum number of businesses saved to the dataset. |
| `enrichProfiles` | boolean | no | `false` | When enabled, each business `/profile/` page is fetched for the full address, star rating, review count, coordinates and images. |
| `proxy` | object | no | `{ "useApifyProxy": false }` | Standard Apify proxy configuration. Off by default; useful to route through Indian residential proxies. |

### Output

One dataset item per business. Fields:

| Field | Type | Description |
| --- | --- | --- |
| `businessId` | string | Sulekha internal business id |
| `businessName` | string | Business / provider name |
| `category` | string | Sulekha sub-category (e.g. "AC Services") |
| `city` | string | City name |
| `locality` | string | Area / neighbourhood |
| `address` | string | Full street address (profile pages) or area-level address (listing cards) |
| `phone` | string | Contact phone number |
| `rating` | number | Star rating (profile pages) |
| `reviewCount` | number | Number of reviews (profile pages) |
| `sulekhaScore` | number | Sulekha Score out of 10 |
| `services` | array | List of services offered |
| `workingHours` | string | Opening hours |
| `profileUrl` | string | Link to the business profile page |
| `yearsOfExperience` | string | Years in business |
| `verified` | boolean | Sulekha-verified badge |
| `premium` | boolean | Premium / paid listing badge |
| `about` | string | Short business description |
| `latitude` | number | Geo coordinate (profile pages) |
| `longitude` | number | Geo coordinate (profile pages) |
| `images` | array | Business image URLs (profile pages) |
| `source` | string | `category` (listing card) or `profile` (enriched) |
| `scrapedAt` | string | ISO timestamp |

Default dataset view: **overview** (business name, category, city, locality, phone, Sulekha score, rating, reviews, profile URL).

### Example Input

```json
{
  "categories": ["ac-repair-services", "plumbers"],
  "cities": ["bangalore", "mumbai"],
  "maxPagesPerCategory": 3,
  "maxItems": 200,
  "enrichProfiles": true
}
```

### Example Output

```json
{
  "businessId": "4d9f2c1a8e",
  "businessName": "Cool Air Solutions",
  "category": "AC Services",
  "city": "Bangalore",
  "locality": "Koramangala",
  "address": "No. 12, 5th Block, Koramangala, Bangalore, Karnataka 560095",
  "phone": "+91 98xxxxxx21",
  "rating": 4.6,
  "reviewCount": 318,
  "sulekhaScore": 9.2,
  "services": ["AC Repair", "AC Installation", "AC Gas Refill"],
  "workingHours": "Mon-Sun 9:00 AM - 9:00 PM",
  "profileUrl": "https://www.sulekha.com/cool-air-solutions/koramangala-bangalore",
  "yearsOfExperience": "12",
  "verified": true,
  "premium": false,
  "about": "Trusted AC service provider in Koramangala with over a decade of experience.",
  "latitude": 12.9352,
  "longitude": 77.6245,
  "images": ["https://images.sulekha.com/..."],
  "source": "profile",
  "scrapedAt": "2026-10-15T09:00:00.000Z"
}
```

### Integrations & Automation

- **Apify API** — trigger runs and read the dataset programmatically.
- **Webhooks** — act when a run finishes (e.g. push new leads into a CRM).
- **Zapier / Make** — connect new dataset rows to Google Sheets, Airtable, HubSpot or a mail tool.

**Recommended schedule:** run weekly to keep an India local-services lead database fresh. For fast-moving categories (AC repair, movers), a **daily** run across your priority cities keeps new entrants and rating changes current.

### Related Actors

- [JustDial Scraper](https://apify.com/ahmed_jasarevic/justdial-scraper) — India business leads from JustDial, a close companion source for India local-services data.
- [IndiaMART Scraper](https://apify.com/ahmed_jasarevic/indiamart-scraper) — India B2B supplier and product leads.
- [TradeIndia Scraper](https://apify.com/ahmed_jasarevic/tradeindia-scraper) — India B2B leads with GST and emails.
- [Local Business Leads Scraper](https://apify.com/ahmed_jasarevic/local-scraper) — CHEAP local business leads with emails and contacts.
- [Yell.com Scraper](https://apify.com/ahmed_jasarevic/yell-scraper) — UK local-business leads (emails & phones) for the same lead-gen workflow outside India.

### FAQ

#### Why use this actor instead of the official API?

Sulekha does not offer a public API for retrieving business listings. This actor reads the same publicly available listing and `/profile/` pages a normal visitor sees and returns them as structured JSON, so you can build lead lists without an API key or endpoint contract.

#### What are alternatives to this actor or to Sulekha data?

For India local-services and business-directory data, JustDial and IndiaMART are the closest alternative sources; this actor's own JustDial and IndiaMART scrapers cover those. Within the Sulekha ecosystem, this actor is the category + city listing and profile scraper.

#### Can I get Sulekha phone numbers and business addresses?

Yes — `phone` comes from the listing card and profile page, and the full street `address` is available when you enable **Enrich with profile pages**. Listing cards expose the Sulekha Score but not the star rating or review count; enable enrichment to get those too.

#### Can I scrape Sulekha by city such as Bangalore or Mumbai?

Yes. Pass one or more city slugs in `cities` (e.g. `bangalore`, `mumbai`, `delhi`, `chennai`, `hyderabad`, `pune`) and the actor crawls each category for every city.

#### Does it need a proxy or India IP?

No. Sulekha's server-rendered pages are reachable without a browser or proxy. A proxy is optional and mainly useful if you prefer to route through Indian residential IPs.

#### How do I export Sulekha data to CSV or Excel?

Every run writes to an Apify dataset; use the console's **Export** button (CSV, Excel, JSON) or the Apify API's dataset endpoint to pull the items into your own pipeline.

### For AI Agents & LLM Apps

Purpose: return India local-services business listings (name, phone, locality, address, rating, services) for a category × city grid on Sulekha.com.

Minimal working input:

```json
{
  "categories": ["ac-repair-services"],
  "cities": ["bangalore"]
}
```

Variant inputs:

```json
{ "categories": ["plumbers", "interior-designers"], "cities": ["mumbai"], "enrichProfiles": true, "maxItems": 500 }
```

```json
{ "startUrls": [{ "url": "https://www.sulekha.com/ac-repair-services/bangalore" }], "maxItems": 100 }
```

Output fields (dataset): `businessName, category, city, locality, address, phone, rating, reviewCount, sulekhaScore, services, workingHours, profileUrl, yearsOfExperience, verified, premium, about, latitude, longitude, images, source, scrapedAt`.

Behaviors an agent should know:

- The actor crawls the full **category × city** cartesian product; providing 3 categories and 3 cities produces 9 crawls.
- If both `startUrls` and `categories`/`cities` are set, `startUrls` are used for full control.
- `rating` and `reviewCount` are populated **only** when `enrichProfiles: true` (they are not on listing cards); leaving it `false` returns `sulekhaScore` but not the star rating.
- Free users receive a 10-business preview; paying users get the full run up to `maxItems`.
- Billing model: pay-per-event — one `apify-default-dataset-item` charge per business saved (~$0.002/result at the entry tier, i.e. ~$2 per 1,000 businesses) plus one `apify-actor-start` charge per run.

### Legal & Compliance Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by Sulekha** or Sulekha.com. It reads only publicly available business listing and `/profile/` pages; it does not bypass login, private endpoints, or CAPTCHAs, and it does not access anything behind authentication. Users are responsible for their own compliance with Sulekha's Terms of Service and applicable data-protection law. Where the output contains business contact details, ensure you have a lawful basis to collect and use them, and do not use such data for unsolicited commercial outreach in violation of applicable law.

### SEO Keywords

sulekha scraper, sulekha business scraper, sulekha data extraction, sulekha leads, sulekha api, sulekha business listings, india business leads, india local services data, local business directory data, b2b leads india, justdial alternative, phone number extraction india, business listing scraper india, city wise business data india, smb leads india, verified business contacts india, ac repair services data, plumbers data india, home services leads india, sulekha profile scraper, sulekha export csv, india market research data

# Actor input Schema

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

Sulekha category slugs (e.g. "ac-repair-services", "plumbers", "interior-designers") or full category URLs. Combined with each city below.

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

Sulekha city slugs (e.g. "bangalore", "mumbai", "delhi", "chennai", "hyderabad", "pune").

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

Optional. Direct Sulekha category listing URLs (e.g. https://www.sulekha.com/ac-repair-services/bangalore) or /profile/ URLs. Use this instead of Categories + Cities for full control.

## `maxPagesPerCategory` (type: `integer`):

Safety cap on the listing pages crawled for each category + city combination (each page holds ~10-20 businesses). Pagination also stops automatically when "Max businesses" is reached; the cap is raised automatically if needed to reach it.

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

Maximum number of businesses to save to the dataset.

## `enrichProfiles` (type: `boolean`):

When enabled, each business /profile/ page is fetched for full details (complete street address, star rating, review count, geo coordinates, images, full service list). Slower and uses more requests.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "categories": [
    "ac-repair-services"
  ],
  "cities": [
    "bangalore"
  ],
  "startUrls": [],
  "maxPagesPerCategory": 20,
  "maxItems": 100,
  "enrichProfiles": false,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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": [
        "ac-repair-services"
    ],
    "cities": [
        "bangalore"
    ],
    "startUrls": [],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/sulekha-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 = {
    "categories": ["ac-repair-services"],
    "cities": ["bangalore"],
    "startUrls": [],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/sulekha-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 '{
  "categories": [
    "ac-repair-services"
  ],
  "cities": [
    "bangalore"
  ],
  "startUrls": [],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/sulekha-scraper --silent --output-dataset

```

## MCP server setup

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