OLX Brasil Scraper — Ads, Prices & Listings avatar

OLX Brasil Scraper — Ads, Prices & Listings

Pricing

from $1.05 / 1,000 ad scrapeds

Go to Apify Store
OLX Brasil Scraper — Ads, Prices & Listings

OLX Brasil Scraper — Ads, Prices & Listings

🔥 Up to 30% OFF! Scrape OLX Brasil classifieds — no login. By search, category or ad URL: title, price, full specs & attributes, all images, seller, location (city, CEP, DDD, GPS) and total results. Fast HTTP, cheap. Perfect for market research & lead gen. ⚡

Pricing

from $1.05 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

Bruno

Bruno

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

OLX Brasil Scraper — Listings, Prices, Specs & Sellers

Scrape real classified ads from OLX Brasil (olx.com.br) — search results and individual ad pages — and get back clean, fully-structured JSON: title, price (and previous price), the full description, every attribute/spec (car km & year, fuel, gearbox; phone storage, battery health, condition; etc.), all image URLs, precise location (city, state, neighbourhood, ZIP, area code), seller, category, publish date, and the total number of matching ads on OLX.

No login, no cookies, public data only. Fast and cheap: it uses a single plain-HTTP request per page (no heavyweight headless browser) — just with a real Chrome TLS fingerprint so Cloudflare lets it through.

Why it's better than other OLX scrapers

  • Richest fields per ad. Most scrapers return title/price/location. This one also returns the full attribute list and a ready-to-use specs object (e.g. specs["Ano"], specs["Quilometragem"] for cars; specs["Memória interna"], specs["Saúde da bateria"] for phones), all photos, seller info, neighbourhood + ZIP + area code, oldPrice, delivery/OLX-Pay flags and more — all straight from OLX's own data, no second request needed.
  • Cheaper to run. Plain HTTP (~1 MB/page, ~1 s) instead of a 2 GB Chromium downloading megabytes of assets — less proxy bandwidth, less compute, faster runs.
  • Automatic pagination up to your maxItems, plus the totalAdsAvailable count so you know how big the full result set is.
  • Honest. If a page is ever blocked or its markup changes, the item carries an error field — it never invents a price, title or listing.

Input

{
"search": ["iphone 13"],
"category": "",
"state": "sp",
"sort": "relevance",
"urls": [],
"maxItems": 40,
"maxConcurrency": 4,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "BR" }
}
  • search — keywords, one per line. Each is its own search. Provide at least one of search or urls.
  • category — optional OLX category path, e.g. "celulares" or "autos-e-pecas/carros-vans-e-utilitarios".
  • state — optional 2-letter UF ("sp", "rj", "mg"…), applied as OLX's estado-<uf> filter. (Alias: location.)
  • sort — relevance (default), date (newest), price (cheapest), biggest_price (most expensive).
  • urls — OLX search URLs (paginated automatically) or individual ad URLs (scraped in full detail).
  • maxItems — total cap across all searches/URLs (default 40). It paginates until it hits this or runs out.
  • maxConcurrency / maxRetries / timeoutSecs — tuning. Each retry rotates to a fresh residential IP.
  • includeRaw — also attach OLX's raw ad object under raw.
  • proxyConfiguration — RESIDENTIAL is required (datacenter IPs are hard-blocked by Cloudflare), defaults to Brazil.

Output

Search result (source: "search", one per ad):

{
"source": "search", "searchTerm": "iphone 13", "pageNumber": 1, "totalAdsAvailable": 15146,
"listId": 1541146668, "title": "iPhone 13 Pro Max (impecável) + Acessórios Apple",
"price": 3410, "priceText": "R$ 3.410", "oldPrice": null,
"url": "https://sp.olx.com.br/.../iphone-13-pro-max-...-1541146668",
"categoryName": "Celulares e Smartphones", "categoryId": "3060",
"location": "São Paulo - SP", "city": "São Paulo", "state": "SP",
"neighbourhood": "Santa Cecília", "ddd": "11",
"publishedDate": "2026-10-04T23:29:52.000Z",
"imageCount": 6, "thumbnail": "https://img.olx.com.br/images/84/848659930498343.jpg",
"images": ["https://img.olx.com.br/..."],
"specs": { "Marca": "APPLE", "Modelo": "IPHONE 13 PRO MAX", "Condição": "Usado - Excelente",
"Memória interna": "256GB", "Cor": "Verde", "Saúde da bateria": "OK (60% até 79%)" },
"attributes": [ { "name": "electronics_brand", "label": "Marca", "value": "APPLE" } ],
"professionalAd": false, "olxPay": true, "olxDelivery": true, "extractionMethod": "json"
}

Ad detail (source: "listing", from an individual ad URL): everything above plus adId, full description, seller ({ name, id, type, whatsapp, chatEnabled }), zipcode, latitude/ longitude (when published), parentCategoryName, firstPublishedDate, videos, and categorySpecificData (vehicle/real-estate blocks).

How it works (and why residential is required)

OLX Brasil sits behind Cloudflare. Verified while building this Actor:

  1. A datacenter IP is blocked outright (HTTP 403) — even with a perfect Chrome TLS fingerprint.
  2. On a residential IP, a plain client with a weak TLS fingerprint (curl / Node) is still blocked.
  3. On a residential IP with a real-Chrome TLS fingerprint, plain HTTP returns the full page.

So the Actor does a plain HTTP GET per page through Apify residential proxy with a real Chrome TLS handshake, then reads the listing data straight from the page's embedded JSON (the Next.js RSC stream on search pages; the initial-data blob on ad pages). No browser is launched.

Pricing

Billed per ad returned (pay-per-event ad) — you only pay for real extracted listings, not for pages, requests or errors.