OLX Brasil Scraper — Ads, Prices & Listings
Pricing
from $1.05 / 1,000 ad scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
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
specsobject (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 thetotalAdsAvailablecount 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
errorfield — 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 ofsearchorurls.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'sestado-<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 underraw.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:
- A datacenter IP is blocked outright (HTTP 403) — even with a perfect Chrome TLS fingerprint.
- On a residential IP, a plain client with a weak TLS fingerprint (curl / Node) is still blocked.
- 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.