OLX Brazil Scraper — Ads, Prices, Location & Seller Data avatar

OLX Brazil Scraper — Ads, Prices, Location & Seller Data

Pricing

from $1.50 / 1,000 results

Go to Apify Store
OLX Brazil Scraper — Ads, Prices, Location & Seller Data

OLX Brazil Scraper — Ads, Prices, Location & Seller Data

Scrape OLX Brasil (olx.com.br) classified ads by keyword, category or URL. Get title, price, price drops, photos, location (city, neighbourhood, state, DDD), attributes, vehicle specs, market-price benchmarks and seller data. Export to JSON/CSV/Excel for price monitoring, leads and market research.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

36

Total users

1

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

OLX Brazil Scraper — Classified Ads, Prices, Locations, Vehicle Specs & Seller Data

Extract structured classified listings from OLX Brasil (olx.com.br) — Brazil's largest online marketplace. Turn any keyword search, department category, or regional URL into a clean, normalized dataset: ad title, numeric BRL price, price-drop flags, full photo gallery, municipality / neighborhood / state (UF) / DDD phone area code, category-specific attributes, OLX Pay & Delivery flags, and seller type — plus optional detail-page enrichment for seller name & public ID, full description, vehicle specifications, and vehicle market-price benchmarks.

Export every result to JSON, CSV, Excel, HTML, XML, or the Apify API — no login, no manual scraping.

Apify Actor


⚡ At a glance

FeatureDetails
🎯 Target marketplaceOLX Brasil (olx.com.br) — Brazil's #1 classifieds marketplace across all 27 federative units (UFs)
🗂️ Supported verticalsAutos & Parts (autos-e-pecas), Real Estate (imoveis), Electronics & Phones (eletronicos-e-celulares), Home & Appliances, Fashion, Jobs, Agro & Industry, Services, and more
💰 Price intelligenceNormalized integer price in BRL (R$), formatted priceText, previous oldPrice, and priceDropped reduction badge
📍 Structured locationBroken down into state (2-letter UF), city (municipality), neighbourhood, ddd (phone area code), and locationLabel
🧩 Dynamic attributesCategory-specific attributes object (brand, model, storage, condition, battery health, mileage, fuel, rooms, m², condo fee, etc.)
🚗 Detail enrichmentOptional fetchDetails: true extracts sellerName, sellerId, full description, vehicle specs (vehicleYear, vehicleMileage, vehicleFuel, vehicleTransmission), and vehicle market-price benchmarks (marketPriceMin, marketPriceMedian, marketPriceMax)
🔁 Pagination & ScaleAutomatic multi-page traversal (~50 ads/page) supporting 1,000+ results pagination per run with deterministic listId deduplication
📦 Bulk exportJSON, JSONL, CSV, Excel (XLSX), HTML, XML, RSS, and REST API endpoints

🔎 Why scrape OLX Brasil?

OLX Brasil is the heartbeat of Brazil's recommerce, automotive, and real estate classifieds economy, hosting tens of millions of active listings across São Paulo, Rio de Janeiro, Minas Gerais, Paraná, Rio Grande do Sul, Bahia, Distrito Federal, and every state in the country. Whether you are tracking smartphone resale values, benchmarking used-car prices against FIPE/market medians, monitoring apartment rents by neighborhood, or building B2B lead lists of professional dealerships (isProfessional: true), OLX Brasil holds the live ground truth.

Collecting this data manually or with basic scripts quickly runs into roadblocks:

  • Massive pagination: High-volume categories and keywords span dozens to hundreds of pages (~50 ads per page).
  • Inconsistent Brazilian currency & attribute formatting: Prices appear as R$ 2.490, while critical product specifications (storage, condition, mileage, rooms, condo fees) are nested inside category-specific attribute arrays.
  • Regional access blocks: OLX Brasil restricts non-Brazilian and datacenter IP ranges, requiring automatic session management over Brazilian residential IPs.

This OLX Brasil scraper handles session rotation, multi-page traversal, BRL price parsing, location splitting, and listId deduplication out of the box — delivering an analysis-ready dataset in seconds.

Common reasons teams use this OLX Brasil data extractor

  • 📊 E-commerce & Recommerce Price Monitoring — Track live asking prices and priceDropped events for iPhones, notebooks, consoles, and appliances across Brazil.
  • 💸 Reselling & Arbitrage Sourcing — Spot underpriced electronics, collectibles, and auto parts the moment they are published (publishedAt).
  • 🚗 Used-Car & Motorcycle Valuation — Extract vehicle listings with odometer mileage, model year, fuel type, transmission, and OLX's built-in market-price range (marketPriceMin / Median / Max) to identify below-market inventory.
  • 🏠 Real Estate Market Intelligence — Benchmark apartment and house sale/rental prices (imoveis) by state (state), municipality (city), and neighborhood (neighbourhood).
  • 🏢 B2B Lead Generation — Filter isProfessional == true (or sellerType == "Professional") and group by ddd area code and state to build targeted lists of car dealerships, real estate brokerages, and electronics stores.

✨ What this OLX Brasil scraper does

  • ✅ Search by keyword, category, or exact URL — Run multiple keywords in searchQueries, select a department in category, browse a whole category without keywords, or paste custom filtered URLs in startUrls.
  • ✅ Unlocked 1,000+ results pagination — Automatically steps through result pages (?o=1, 2, 3 …), collecting ~50 ads per page until your maxItemsPerSearch or maxTotalItems target is reached.
  • ✅ 100% deduplicated output — Every listing is keyed on its unique OLX listId, ensuring zero duplicates even when searches overlap.
  • ✅ Normalized BRL pricing & discount tracking — Converts Brazilian currency strings into numeric price and oldPrice integers alongside priceDropped: true/false.
  • ✅ Granular Brazilian geography — Separates every listing's location into state (UF), city, neighbourhood, and ddd (2-digit telephone area code).
  • ✅ Rich category attributes dictionary — Preserves all structured item properties (e.g., Marca, Modelo, Condição, Memória interna, Quilometragem, Quartos, Área útil) as a clean JSON object.
  • ✅ Seller & marketplace badges — Captures isProfessional, sellerType (Private vs Professional), isFeatured, hasOlxPay, hasOlxDelivery, and sellerGoogleRating.
  • ✅ Optional deep ad enrichment (fetchDetails: true) — Opens each ad page to extract sellerName, sellerId, full text description, structured vehicleBrand / vehicleModel / vehicleYear / vehicleMileage / vehicleFuel / vehicleTransmission / vehicleBodyType / vehicleDoors, and market-price benchmarks.

🎯 Use cases

1. Used-Car Dealerships, Auto Portals & Fleet Buyers

  • Instant below-market car alerts: Scrape autos-e-pecas with fetchDetails: true, compare each listing's asking price against marketPriceMedian, and flag vehicles priced >12% below median market value.
  • Dealer inventory intelligence: Filter isProfessional: true across São Paulo (DDD 11) or Rio (DDD 21) to monitor professional dealer stock and pricing velocity.

2. Recommerce Platforms, Flippers & Electronics Resellers

  • Smartphone & console price indexes: Track daily median asking prices for iphone 13, iphone 14, iphone 15, playstation 5, and macbook stratified by storage (Memória interna), condition (Condição), and battery health (Saúde da bateria).
  • OLX Pay & Delivery sourcing: Filter hasOlxPay == true and hasOlxDelivery == true to find nationwide shippable inventory with buyer protection.

3. Real Estate Analysts & Proptech Teams

  • Rental & sale yield mapping: Scrape category: "imoveis" (or state-specific URLs via startUrls) and extract room counts, square footage, condominium fees, and IPTU from attributes across Brazilian municipalities.

4. B2B Sales & Marketplace Growth Teams

  • Merchant acquisition pipelines: Identify high-volume professional sellers (isProfessional: true) operating in specific states (state) and phone regions (ddd) for B2B SaaS, financing, or logistics outreach.

📥 Input parameters

Configure the actor via the Apify Console form or pass JSON through the API. All parameters are optional — running with empty inputs returns a diverse 100-item sample across Brazil's most popular searches.

ParameterTypeDefaultPrefillDescription
searchQueriesarray<string>[]["iphone"]One or more search keywords (e.g., ["iphone 13", "honda civic", "apartamento"]). Each keyword runs as an independent paginated search. Leave empty to browse your chosen category or run a popular multi-category mix.
categorystring""""Optional OLX department slug (autos-e-pecas, imoveis, eletronicos-e-celulares, etc.). Empty = all categories.
minPriceinteger——Minimum asking price in Brazilian Reais (BRL).
maxPriceinteger——Maximum asking price in Brazilian Reais (BRL).
fetchDetailsbooleanfalsefalseWhen true, visits each individual ad page to enrich sellerName, sellerId, description, vehicle specs, and market-price benchmarks. Leave false for maximum speed.
maxItemsPerSearchinteger0100Maximum ads to collect per keyword or start URL. 0 = unlimited (governed by maxTotalItems).
maxTotalItemsinteger0—Global cap across all searches in the run (0 = unlimited). Set to 1000+ for deep sweeps.
startUrlsarray<string>[]—Advanced: Paste full olx.com.br search, category, state, or city URLs. Overrides searchQueries and category when provided.
proxyConfigurationobjectResidential BRResidential BRProxy settings. Brazilian (BR) residential proxy is enabled by default and strongly recommended.

Sample Input Recipes

Recipe 1: Fast keyword search (100 listings in ~15 seconds)
{
"searchQueries": ["iphone"],
"maxItemsPerSearch": 100,
"fetchDetails": false
}
Recipe 2: Deep 1,000+ listing category & multi-keyword extraction
{
"searchQueries": ["iphone 13", "iphone 14", "iphone 15", "samsung s23", "macbook"],
"category": "eletronicos-e-celulares",
"minPrice": 1000,
"maxPrice": 8000,
"maxItemsPerSearch": 300,
"maxTotalItems": 1500
}
Recipe 3: Used cars with full specs & market-price benchmarks
{
"searchQueries": ["honda civic", "toyota corolla"],
"category": "autos-e-pecas",
"fetchDetails": true,
"maxItemsPerSearch": 100
}
Recipe 4: State / City / Custom Sort via startUrls
{
"startUrls": [
"https://www.olx.com.br/estado-sp/regiao-de-sao-paulo/imoveis/aluguel?q=apartamento",
"https://www.olx.com.br/estado-rj/rio-de-janeiro-e-regiao/autos-e-pecas/carros-vans-e-utilitarios"
],
"maxItemsPerSearch": 500,
"maxTotalItems": 1000
}

📤 Output schema & field reference

Each OLX ad is normalized into a flat JSON record. Below is a real record from a verified run:

{
"listId": "1500809561",
"title": "iPhone 14 Plus 128GB Midnight c/ Caixa",
"price": 2490,
"priceText": "R$ 2.490",
"oldPrice": null,
"priceDropped": false,
"category": "Celulares e Smartphones",
"categoryId": "3060",
"isProfessional": false,
"isFeatured": false,
"state": "RJ",
"city": "Niterói",
"neighbourhood": "Largo da Batalha",
"ddd": "21",
"locationLabel": "Niterói, Largo da Batalha",
"publishedAt": "2026-10-31T11:09:29.000Z",
"imageUrl": "https://img.olx.com.br/images/43/437679042999046.jpg",
"imageCount": 5,
"images": [
"https://img.olx.com.br/images/43/437679042999046.jpg",
"https://img.olx.com.br/images/45/455669524947931.jpg"
],
"attributes": {
"Categoria": "Celulares e Smartphones",
"Marca": "APPLE",
"Modelo": "IPHONE 14",
"Condição": "Usado - Excelente",
"Memória interna": "128GB",
"Cor": "Preto",
"Saúde da bateria": "Boa (80% até 94%)",
"Aceita trocas": "Não"
},
"sellerGoogleRating": null,
"hasOlxPay": true,
"hasOlxDelivery": false,
"sellerName": null,
"sellerId": null,
"sellerType": "Private",
"phoneVerified": null,
"description": null,
"vehicleBrand": null,
"vehicleModel": null,
"vehicleYear": null,
"vehicleMileage": null,
"vehicleFuel": null,
"vehicleTransmission": null,
"vehicleBodyType": null,
"vehicleDoors": null,
"marketPriceMin": null,
"marketPriceMedian": null,
"marketPriceMax": null,
"marketSampleSize": null,
"url": "https://rj.olx.com.br/rio-de-janeiro-e-regiao/celulares/iphone-14-plus-128gb-midnight-c-caixa-1500809561",
"searchTerm": "iphone",
"scrapedAt": "2026-11-01T23:45:11.000Z"
}

🏷️ Core Listing, Price & Marketplace Fields

FieldTypeCoverageDescription
listIdstring🟢 High (100%)Unique OLX Brasil ad identifier used for deduplication
titlestring🟢 High (100%)Listing headline as published by the seller
priceinteger | null🟢 High (~98%)Normalized integer price in BRL (null only when unpriced / "a combinar")
priceTextstring | null🟢 High (~98%)Original formatted price string (e.g., "R$ 2.490")
oldPriceinteger | null🟡 ConditionalPrevious BRL price when the listing has been discounted
priceDroppedboolean🟢 High (100%)true if OLX displays a price-reduction badge on the listing
categorystring🟢 High (100%)Human-readable OLX subcategory name (e.g., "Celulares e Smartphones")
categoryIdstring🟢 High (100%)Internal OLX numeric category ID
attributesobject | null🟢 High (~98%)Key-value dictionary of category-specific attributes (brand, model, condition, rooms, mileage, etc.)
hasOlxPayboolean🟢 High (100%)true when OLX Pay online checkout is enabled
hasOlxDeliveryboolean🟢 High (100%)true when OLX Delivery shipping is enabled
isFeaturedboolean🟢 High (100%)true when the ad is promoted / pinned
publishedAtstring🟢 High (100%)ISO-8601 timestamp when the ad was published
urlstring🟢 High (100%)Canonical direct URL to the OLX ad
searchTermstring🟢 High (100%)Keyword, category, or start URL that produced this record
scrapedAtstring🟢 High (100%)ISO-8601 UTC extraction timestamp

📍 Location & Media Fields

FieldTypeCoverageDescription
statestring🟢 High (100%)Two-letter Brazilian state code (SP, RJ, MG, PR, RS, BA, SC, DF, etc.)
citystring🟢 High (100%)Brazilian municipality name (e.g., "São Paulo", "Niterói", "Belo Horizonte")
neighbourhoodstring | null🟢 High (~96%)Neighborhood (bairro) name within the municipality
dddstring🟢 High (100%)2-digit Brazilian telephone area code (11, 21, 31, 41, 51, etc.)
locationLabelstring🟢 High (100%)Combined location label displayed on the listing card
imageUrlstring | null🟢 High (~99%)Primary thumbnail/main photo URL
imageCountinteger🟢 High (100%)Total number of photos attached to the listing
imagesarray<string>🟢 High (~99%)Full array of high-resolution photo URLs

👤 Seller, Vehicle Specs & Market Benchmarks (fetchDetails Enrichment)

FieldTypeCoverageDescription
isProfessionalboolean🟢 High (100%)true for commercial/professional accounts, false for private sellers (always populated)
sellerTypestring🟢 High (100%)"Professional" or "Private" (always populated)
sellerGoogleRatingnumber | null🟡 ConditionalSeller's Google rating when displayed on professional accounts
sellerNamestring | null🟡 Opt-in (fetchDetails)Seller display name extracted from the detail page
sellerIdstring | null🟡 Opt-in (fetchDetails)Seller public UUID on OLX Brasil
descriptionstring | null🟡 Opt-in (fetchDetails)Full plain-text ad description
vehicleBrand · vehicleModelstring | null🟡 Opt-in (fetchDetails)Vehicle manufacturer and model (for autos-e-pecas listings)
vehicleYear · vehicleMileagestring | null🟡 Opt-in (fetchDetails)Model year and odometer reading in km
vehicleFuel · vehicleTransmissionstring | null🟡 Opt-in (fetchDetails)Fuel type (Flex, Gasolina, Diesel, Álcool) & transmission (Automático, Manual)
vehicleBodyType · vehicleDoorsstring | null🟡 Opt-in (fetchDetails)Body style (Sedã, SUV, Hatch) and door count
marketPriceMin · Median · Maxnumber | null🟡 Opt-in (fetchDetails)OLX market-price floor, median (p50), and ceiling for comparable vehicles
marketSampleSizeinteger | null🟡 Opt-in (fetchDetails)Number of comparable vehicles used in the market-price benchmark

🗂️ OLX Brasil Categories & State URL Reference

Built-in Department Slugs (category)

Departmentcategory ValueTypical Attributes Extracted
Autos & Partsautos-e-pecasBrand, Model, Year, Mileage (km), Fuel, Transmission, Doors, Color, Final Plate
Real EstateimoveisProperty Type, Rooms (Quartos), Bathrooms, Area (m²), Garage Spaces, Condo Fee, IPTU
Electronics & Phoneseletronicos-e-celularesBrand, Model, Condition, Internal Storage (Memória), Color, Battery Health
For Your Homepara-a-sua-casaCategory, Condition, Type, Material
Home ApplianceseletrodomesticosType, Brand, Condition, Voltage (110V / 220V)
Fashion & Beautymoda-e-belezaCategory, Gender, Condition, Size
Sports & Leisureesportes-e-lazerType, Condition, Brand
Music & Hobbiesmusica-e-hobbiesInstrument/Hobby Type, Condition
Kids & Babyartigos-infantisSubcategory, Condition
Petsanimais-de-estimacaoAnimal Type, Breed
Agro & Industryagro-e-industriaEquipment Category, Condition
Business & Officecomercio-e-escritorioEquipment Type, Condition
Jobsvagas-de-empregoRole, Contract Type
ServicesservicosService Category

Targeting Specific Brazilian States via startUrls

To restrict scraping to a single Brazilian state (UF), pass https://www.olx.com.br/estado-{uf}?q={keyword} (or combine with a category slug like https://www.olx.com.br/{category}/estado-{uf}) in startUrls:

  • São Paulo (SP): https://www.olx.com.br/estado-sp
  • Rio de Janeiro (RJ): https://www.olx.com.br/estado-rj
  • Minas Gerais (MG): https://www.olx.com.br/estado-mg
  • Paraná (PR): https://www.olx.com.br/estado-pr
  • Rio Grande do Sul (RS): https://www.olx.com.br/estado-rs
  • Bahia (BA): https://www.olx.com.br/estado-ba
  • Santa Catarina (SC): https://www.olx.com.br/estado-sc
  • Distrito Federal (DF): https://www.olx.com.br/estado-df

🔁 Pagination & scale

The OLX Brazil Scraper is designed for both quick 100-item checks and 1,000+ listing production runs:

  • Automatic multi-page pagination: Each OLX Brasil search page returns ~50 organic ads. The scraper automatically increments the ?o=2, 3, 4 … pagination parameter until it reaches your maxItemsPerSearch / maxTotalItems target or the end of available results.
  • Category-only browsing: If you select a category (e.g., imoveis or autos-e-pecas) and leave searchQueries empty, the actor paginates directly through the entire category feed nationwide.
  • Cross-search deduplication: Every record is deduplicated in memory by listId. Running overlapping keywords or multi-region startUrls never produces duplicate rows (0% duplicates verified across 500+ ad runs).
  • Scaling past 5,000+ ads: For massive nationwide pulls, pass multiple state URLs (estado-sp, estado-rj, estado-mg, estado-pr, estado-rs) in startUrls or split by price bands (minPrice / maxPrice).

💻 API Integration Examples

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("haketa/olx-brasil-scraper").call(run_input={
"searchQueries": ["iphone 14", "iphone 15"],
"category": "eletronicos-e-celulares",
"minPrice": 2000,
"maxTotalItems": 1000,
"fetchDetails": False,
})
for ad in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"R$ {ad['price']} | {ad['title']} | {ad['city']}-{ad['state']} (DDD {ad['ddd']}) | {ad['url']}")

Node.js / TypeScript (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/olx-brasil-scraper').call({
searchQueries: ['honda civic'],
category: 'autos-e-pecas',
fetchDetails: true,
maxItemsPerSearch: 150,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const belowMedian = items.filter(
(ad) => ad.price && ad.marketPriceMedian && ad.price < ad.marketPriceMedian * 0.9
);
console.log(`Total cars: ${items.length} | >10% below median market price: ${belowMedian.length}`);

cURL

curl -X POST "https://api.apify.com/v2/acts/haketa~olx-brasil-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQueries": ["iphone"],
"maxItemsPerSearch": 100
}'

❓ Frequently Asked Questions

How many ads can I scrape per run, and how fast?

You can collect 1,000+ ads in a single run. In default listing mode (fetchDetails: false), the actor scrapes ~50 ads per page and typically collects 100 ads in ~12–20 seconds and 500 ads in ~45 seconds with 0% duplicates.

Do I need an OLX Brasil account or login?

No. The actor extracts publicly available marketplace listings without logging in or requiring any OLX credentials.

Why is the Brazilian (BR) residential proxy enabled by default?

OLX Brasil blocks non-Brazilian and datacenter IP addresses at the edge. The actor comes pre-configured with Apify's Brazilian residential proxy pool (apifyProxyCountry: "BR") and automatic session warm-up/rotation so runs succeed reliably.

When should I enable fetchDetails: true?

Leave fetchDetails: false when you need fast, low-cost extraction of prices, titles, photos, locations (city, neighbourhood, state, ddd), seller type (Private vs Professional), and category attributes. Enable fetchDetails: true when you specifically need the full text description, sellerName, sellerId, or vehicle market-price benchmarks (marketPriceMin / Median / Max).

Can I scrape a whole category without entering keywords?

Yes! Pick any department in category (for example imoveis or autos-e-pecas), leave searchQueries empty, and set maxTotalItems: 1000. The scraper will paginate directly through the category's nationwide listing stream.

Can I get seller phone numbers?

OLX Brasil masks direct phone numbers behind authenticated in-app chat. However, the actor extracts the listing's ddd phone area code, isProfessional / sellerType, and (when fetchDetails: true) sellerName and sellerId.


Exploring classifieds and real estate marketplaces across Latin America and globally? Check out these sibling scrapers from haketa:


🔍 SEO Keywords

OLX Brazil scraper · OLX Brasil scraper · scrape OLX Brasil · olx.com.br data extractor · OLX Brasil API · Brazilian classifieds scraper · Brazil used car price scraper · OLX imóveis scraper · OLX carros scraper · OLX lead generation · bulk export JSON CSV Excel API · 1,000+ results pagination · B2B intelligence · recommerce Brazil dataset


📋 Changelog

VersionDateNotes
1.2.02026-11Unlocked 1,000+ deep pagination & category-only browsing: Changed maxItemsPerSearch default to 0 (auto-governed by maxTotalItems), removed the 100-item clamp when users explicitly request 1,000+ items on default/category runs, enabled direct category pagination when searchQueries is empty, and raised pagination ceiling to 1,000 pages.
1.1.02026-11App Router RSC stream + legacy parser: Updated search page extractor to decode OLX Brasil's current streaming payload alongside legacy __NEXT_DATA__. Verified 500 unique ads in ~44s with 0% duplicates and 100% core field fill.
1.0.02026-07Initial release — Keyword, category & startUrls scraping, BRL price & discount normalization, UF/city/neighborhood/DDD breakdown, category attributes, and optional fetchDetails vehicle & seller enrichment.
⌂ 换网址