# OLX India Listings Scraper (`fetch_cat/olx-india-listings-scraper`) Actor

Scrape public OLX India classified listings by keyword, category, location, or listing URL for prices, sellers, images, and attributes.

- **URL**: https://apify.com/fetch\_cat/olx-india-listings-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.07 / 1,000 result extracteds

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/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

## OLX India Listings Scraper

Export public OLX India classified listings into clean datasets. Search by keyword or run exact OLX India category/search URLs, then download listing prices, locations, seller labels, images, and product attributes as CSV, JSON, Excel, XML, or through the Apify API.

### What does this actor do?

OLX India Listings Scraper turns public OLX India search results and category URLs into structured marketplace data. It collects listing titles, prices, locations, seller labels, images, attributes, posting timestamps, and source URLs so you can analyze classifieds without manually copying results.

### What you can do

- Monitor used-car, property, electronics, furniture, jobs, services, and other OLX India categories.
- Track asking prices and fresh inventory for resale, marketplace research, and local lead generation.
- Export public seller/location signals without opening chat, contact, or login-only flows.
- Build alerts and dashboards from repeatable keyword or URL inputs.

### Who is it for

- Marketplace analysts comparing prices and listing supply across OLX India categories.
- Resellers and dealerships tracking public inventory and seller/location signals.
- Real estate, vehicle, electronics, and local-services teams building lead lists from public classifieds.
- Data teams that need repeatable OLX India exports for dashboards, alerts, or research workflows.

### Ready-to-run examples

- [Track OLX India used car listings](https://apify.com/fetch_cat/olx-india-listings-scraper/examples/track-olx-india-used-cars) — export a small current sample with prices, locations, seller labels, images, and stable ad IDs.
- [Compare OLX India iPhone prices](https://apify.com/fetch_cat/olx-india-listings-scraper/examples/compare-olx-india-iphone-prices) — collect a bounded dataset for resale-price and local-inventory research.
- [Enrich OLX India bike listings](https://apify.com/fetch_cat/olx-india-listings-scraper/examples/enrich-olx-india-bike-listings) — start from an exact public search URL and refresh available detail-page fields.

### Example input

For a custom run, provide one or more search queries or exact OLX India URLs:

```json
{
  "queries": ["car", "iphone"],
  "locationId": "1000001",
  "maxItems": 25
}
```

### Example output

```json
{
  "url": "https://www.olx.in/item/maruti-suzuki-swift-dzire-iid-1678692832",
  "adId": "1678692832",
  "title": "New Maruti Suzuki swift Dzire T-Permit CNG CARS",
  "descriptionSnippet": "Get your commercial vehicle with minimal documents!",
  "price": 185000,
  "priceDisplay": "₹ 1,85,000",
  "currency": "INR",
  "location": {
    "country": "India",
    "state": "Maharashtra",
    "city": "Mumbai",
    "locality": "Vakola",
    "latitude": 19.079,
    "longitude": 72.849
  },
  "categoryId": "85",
  "postedAt": "2026-07-08T08:46:13+0000",
  "createdAt": "2025-04-01T16:45:57+05:30",
  "sellerName": "Carmitra",
  "sellerType": "Regular",
  "sellerId": "248018633",
  "isBusiness": true,
  "isKycVerifiedUser": false,
  "favoriteCount": 11,
  "status": "active",
  "imageCount": 6,
  "videoCount": 0,
  "imageUrls": ["https://apollo.olx.in:443/v1/files/example-IN/image;s=1080x810"],
  "attributes": {
    "Brand": "Maruti Suzuki",
    "Year": "2025",
    "KM driven": "0 km"
  },
  "sourceUrl": "car",
  "sourceType": "query",
  "sourcePage": 1,
  "detailStatus": "not_requested",
  "descriptionRedacted": false,
  "warnings": [],
  "scrapedAt": "2026-07-08T09:00:00.000Z"
}
```

### Input settings

| Field | Type | Description |
|---|---:|---|
| `queries` | string\[] | Keywords to search on OLX India, for example `car`, `iphone`, or `flat for rent`. |
| `startUrls` | array | OLX India search, category, filtered search, or listing URLs. Use this when you already have the exact OLX URL. |
| `locationId` | string | OLX numeric location ID for keyword searches. Default `1000001` searches all India. |
| `maxItems` | integer | Maximum number of listings to save across all inputs. |
| `includeDetails` | boolean | Optionally visit each public listing page to refresh descriptions, images, status, and other public fields. A failed enrichment leaves the base row intact with a warning. |
| `maxPages` | integer | Maximum pages per source, from 1 to 250. Repeated pages are stopped automatically. |
| `maxRequestRetries` | integer | Bounded retries for rate limits, temporary server errors, block pages, timeouts, and malformed responses. Default `2`. |
| `maxRuntimeSecs` | integer | Total run budget from 40 to 270 seconds. The last 30 seconds are reserved for persistence and shutdown. |
| `proxyConfiguration` | object | Optional proxy settings. Direct traffic is the default; enable a proxy only when your runs show blocking. |

### Output fields

| Fields | Description |
| --- | --- |
| `url`, `adId`, `title`, `descriptionSnippet` | Canonical listing identity and contact-redacted public description text. |
| `price`, `priceDisplay`, `currency` | Numeric and displayed asking price. |
| `location` | Country, state, city, locality, latitude, and longitude when available. |
| `categoryId`, `categoryName`, `status`, `postedAt`, `createdAt`, `validTo` | Category and public lifecycle timestamps/status. |
| `sellerName`, `sellerType`, `sellerId`, `isBusiness`, `isKycVerifiedUser`, `eliteSeller` | Public seller labels and flags. |
| `hasPhoneParam` | Contact-availability indicator only; no number is revealed. |
| `favoriteCount`, `imageCount`, `videoCount` | Public listing counters. |
| `imageUrls`, `images` | Public image URLs and available dimensions. |
| `attributes`, `rawAttributes` | Normalized and source-labelled category attributes. |
| `sourceUrl`, `sourceType`, `sourcePage` | Provenance for the query or URL that produced the row. |
| `detailStatus`, `descriptionRedacted`, `warnings` | Per-row enrichment and data-quality diagnostics. |
| `scrapedAt` | ISO timestamp for the saved row. |

The key-value store also contains `RUN_SUMMARY`. If the Actor reaches its safe deadline, `RUN_CHECKPOINT` retains pending source/page work so an Apify resurrection can continue without re-saving existing listing IDs.

### Pricing

This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.

| Event | What is charged | Price |
| --- | --- | ---: |
| `start` | One-time fee charged when a run starts. Covers fixed startup cost (init, proxy warmup, first HTTP setup). | $0.005 |

| Event | What is charged | Free / no discount | Starter / Bronze | Scale / Silver | Business / Gold | Custom / Platinum | Custom / Diamond |
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: |
| `result` | Charged per OLX India listing extracted. | $0.12824 / 1,000 | $0.11151 / 1,000 | $0.08698 / 1,000 | $0.06691 / 1,000 | $0.04461 / 1,000 | $0.03122 / 1,000 |

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

### Tips and limits

- Keep first runs small, such as `maxItems: 25`, while you validate your keywords.
- Use exact `startUrls` for city/category/filter combinations copied from OLX India.
- Contact details, chat messages, private account pages, and login-only data are not collected.
- Direct traffic is the low-cost default and is currently sufficient for small runs. Enable an Apify proxy only when your own run summary reports blocking.
- A readable search with no matches finishes with `EMPTY`; a block page, malformed response, unavailable-only direct listing input, or all-source failure does not masquerade as a successful empty scrape.
- Larger runs save progressively and stop admitting requests before the platform timeout. Inspect `RUN_SUMMARY` and `RUN_CHECKPOINT` before rerunning a partial job.

### Schedule OLX monitoring

Save a small query or category URL as an Apify task, then attach a daily or weekly schedule. Use `adId` as the stable key when comparing datasets so repeated listings are not mistaken for new inventory.

### API usage

Run the actor with cURL:

```bash
curl "https://api.apify.com/v2/acts/fetch_cat~olx-india-listings-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"queries":["car"],"maxItems":25}'
```

Run it with Node.js:

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/olx-india-listings-scraper').call({
  queries: ['car'],
  maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 3));
```

Run it with Python:

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/olx-india-listings-scraper').call(run_input={
    'queries': ['car'],
    'maxItems': 25,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items[:3])
```

Fetch results from the default dataset after the run succeeds:

```bash
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true"
```

### MCP and agent usage

Use this actor from Apify MCP-compatible agents with:

```text
https://mcp.apify.com/?tools=fetch_cat/olx-india-listings-scraper
```

Claude CLI example:

```bash
claude mcp add apify-olx-india "https://mcp.apify.com/?tools=fetch_cat/olx-india-listings-scraper"
```

MCP JSON configuration example:

```json
{
  "mcpServers": {
    "apify-olx-india": {
      "url": "https://mcp.apify.com/?tools=fetch_cat/olx-india-listings-scraper"
    }
  }
}
```

Example prompts:

- "Find 25 OLX India car listings and summarize asking prices by city."
- "Export public iPhone listings from OLX India and return seller names, prices, and image URLs."
- "Monitor this OLX India category URL and identify newly posted listings."

### Related actors

- [Craigslist Classifieds Scraper](https://apify.com/fetch_cat/craigslist-classifieds-scraper)
- [AutoScout24 Car Listings Scraper](https://apify.com/fetch_cat/autoscout24-car-listings-scraper)
- [Google Shopping Results Scraper](https://apify.com/fetch_cat/google-shopping-results-scraper)

### Legality

This actor collects publicly visible OLX India listing data. Do not use it to collect private account data, reveal contact details, bypass login-only flows, spam sellers, or violate OLX India terms or applicable law. Review your use case and retention policy before running large recurring jobs.

### FAQ

**Does this actor require an OLX account?**
No. It exports public listing data visible without logging in.

**Can it reveal phone numbers or chat messages?**
No. Contact/chat flows are login-only or user-action flows and are intentionally out of scope.

**Do I need an Apify proxy?**
Usually not for a small run. Direct traffic is the default. If `RUN_SUMMARY` reports a block, retry with an explicitly configured route; proxy traffic can add platform cost.

**Does this Actor use GraphQL?**
No. Current OLX India pages and reviewed builders use the public relevance JSON feed plus public HTML/listing-page fallback. No stable OLX India GraphQL listing interface was found, so the Actor does not add an unsupported GraphQL dependency.

**What happens when optional listing details fail?**
The base search row is preserved, `detailStatus` becomes `unavailable`, and `warnings` explains the enrichment failure. Failed optional enrichment is not saved or charged as a separate result.

**What should I include when asking for support?**
Share the run ID or run URL, your input JSON, expected output, and actual output so the issue can be reproduced.

### Support

Open an issue on the actor page or contact Apify support with:

- the run ID or run URL,
- the input JSON you used,
- a reproducible public URL, such as `https://www.olx.in/items/q-car`,
- the expected output, and
- the actual output you received.

### Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses search/listing inputs and public product, marketplace, or listing records to produce the output dataset and sends requests to public Olx India Listings pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.

# Actor input Schema

## `queries` (type: `array`):

Keywords to search on OLX India, such as car, iPhone, flat for rent, or sofa.

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

OLX India search, category, filtered search, or listing URLs to scrape. Use this for exact OLX URLs such as https://www.olx.in/items/q-car or https://www.olx.in/cars\_c84.

## `locationId` (type: `string`):

Numeric OLX location ID used for keyword searches. Leave 1000001 for all India, or use a location URL in Start URLs for a specific city/locality.

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

Maximum number of classified listings to save across all queries and start URLs.

## `includeDetails` (type: `boolean`):

Visit each public listing page to refresh its description, images, status, and other public fields. Base rows are still saved with a warning when optional enrichment fails. Seller chat and contact-reveal flows are never opened.

## `maxPages` (type: `integer`):

Safety cap for each query or Start URL. The runtime default is 250. Pagination also stops at Maximum listings, on a repeated page, or before the run deadline.

## `maxRequestRetries` (type: `integer`):

Retries for temporary blocks, rate limits, server errors, timeouts, and malformed responses. Retry-After is honored within the run deadline.

## `maxRuntimeSecs` (type: `integer`):

Total Actor time budget in seconds. The runtime default is 270. The Actor reserves the final 30 seconds for checkpoints, the run summary, and shutdown.

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

Direct traffic is the default because current low-volume OLX India requests work without proxy cost. Enable an Apify Proxy route only when your own runs show blocking.

## Actor input object example

```json
{
  "queries": [
    "car"
  ],
  "startUrls": [
    {
      "url": "https://www.olx.in/items/q-car"
    }
  ],
  "locationId": "1000001",
  "maxItems": 20,
  "includeDetails": false,
  "maxRequestRetries": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

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

No description

## `runCheckpoint` (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 = {
    "queries": [
        "car"
    ],
    "startUrls": [
        {
            "url": "https://www.olx.in/items/q-car"
        }
    ],
    "locationId": "1000001",
    "maxItems": 20,
    "includeDetails": false,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/olx-india-listings-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 = {
    "queries": ["car"],
    "startUrls": [{ "url": "https://www.olx.in/items/q-car" }],
    "locationId": "1000001",
    "maxItems": 20,
    "includeDetails": False,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/olx-india-listings-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 '{
  "queries": [
    "car"
  ],
  "startUrls": [
    {
      "url": "https://www.olx.in/items/q-car"
    }
  ],
  "locationId": "1000001",
  "maxItems": 20,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call fetch_cat/olx-india-listings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gchDcLl1rJE9hMSPa/builds/BjbF7L8xhxnib4qyp/openapi.json
