OLX India Listings Scraper avatar

OLX India Listings Scraper

Pricing

from $0.07 / 1,000 result extracteds

Go to Apify Store
OLX India Listings Scraper

OLX India Listings Scraper

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

Pricing

from $0.07 / 1,000 result extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

5 days ago

Last modified

Share

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

Example input

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

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

Example output

{
"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

FieldTypeDescription
queriesstring[]Keywords to search on OLX India, for example car, iphone, or flat for rent.
startUrlsarrayOLX India search, category, filtered search, or listing URLs. Use this when you already have the exact OLX URL.
locationIdstringOLX numeric location ID for keyword searches. Default 1000001 searches all India.
maxItemsintegerMaximum number of listings to save across all inputs.
includeDetailsbooleanOptionally 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.
maxPagesintegerMaximum pages per source, from 1 to 250. Repeated pages are stopped automatically.
maxRequestRetriesintegerBounded retries for rate limits, temporary server errors, block pages, timeouts, and malformed responses. Default 2.
maxRuntimeSecsintegerTotal run budget from 40 to 270 seconds. The last 30 seconds are reserved for persistence and shutdown.
proxyConfigurationobjectOptional proxy settings. Direct traffic is the low-cost default; after a genuine direct-route failure, the Actor can continue once through standard Apify Proxy. Configure a proxy when you want to use it from the start.

Output fields

FieldsDescription
url, adId, title, descriptionSnippetCanonical listing identity and contact-redacted public description text.
price, priceDisplay, currencyNumeric and displayed asking price.
locationCountry, state, city, locality, latitude, and longitude when available.
categoryId, categoryName, status, postedAt, createdAt, validToCategory and public lifecycle timestamps/status.
sellerName, sellerType, sellerId, isBusiness, isKycVerifiedUser, eliteSellerPublic seller labels and flags.
hasPhoneParamContact-availability indicator only; no number is revealed.
favoriteCount, imageCount, videoCountPublic listing counters.
imageUrls, imagesPublic image URLs and available dimensions.
attributes, rawAttributesNormalized and source-labelled category attributes.
sourceUrl, sourceType, sourcePageProvenance for the query or URL that produced the row.
detailStatus, descriptionRedacted, warningsPer-row enrichment and data-quality diagnostics.
scrapedAtISO 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 pay-per-event pricing. See the live Apify Pricing tab for current rates and plan-specific discounts.

  • start is charged once, after OLX returns a valid listing page or a confirmed empty/unavailable public result. Inputs that fail before a usable source response are not charged this event.
  • result is charged for each unique OLX India listing saved to the dataset. Duplicates and failed optional detail requests are not charged as results.

Apify may separately charge platform usage for compute, storage, proxies, or data transfer. Check the completed run 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. After bounded direct retries, a genuine route or response failure can trigger one automatic standard Apify Proxy fallback; explicitly configured proxy settings are always respected.
  • A readable search with no matches or an exact listing that is no longer public finishes with EMPTY. A block page, malformed response, 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:

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:

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:

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:

$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:

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

Claude CLI example:

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

MCP JSON configuration example:

{
"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."

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. After bounded direct retries, the Actor can make one automatic switch to the standard Apify Proxy route; set proxyConfiguration when you want proxy traffic from the beginning. 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.