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

2

Total users

0

Monthly active users

14 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 default; enable a proxy only when your runs show blocking.

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

EventWhat is chargedPrice
startOne-time fee charged when a run starts. Covers fixed startup cost (init, proxy warmup, first HTTP setup).$0.005
EventWhat is chargedFree / no discountStarter / BronzeScale / SilverBusiness / GoldCustom / PlatinumCustom / Diamond
resultCharged 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:

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

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.