# OLX Brazil Scraper - Listings, Prices, Cars & Leads (`scrapesage/olx-brazil-scraper`) Actor

Scrape OLX Brazil (olx.com.br) classifieds & marketplace — cars, motorcycles, real estate, electronics, jobs & more. Get title, price, price drops, full typed specs, location, photos, seller name & dealer leads, market price reference + new-listing/price-drop monitoring. No login, key or browser.

- **URL**: https://apify.com/scrapesage/olx-brazil-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** E-commerce, Lead generation, Agents
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 listing scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## OLX Brazil Scraper — Listings, Prices, Cars, Real Estate & Seller Leads

Extract **complete OLX Brazil (olx.com.br) data** — the country's #1 classifieds and second-hand marketplace. Scrape **cars, motorcycles, real estate, electronics, home goods and more** with **real prices, price-drop flags, full typed specs, exact location, every photo, the seller's name, and professional/dealer leads** — plus OLX's own **market price reference** (median/min/max of comparable listings) for vehicles. Turn any search into a **new-listing & price-drop monitor**.

No login and no API key — structured JSON straight from OLX's own server-rendered page data, fetched through an anti-detect browser on Brazilian residential IPs so Cloudflare-protected pages come back reliably.

### Why this OLX scraper?

Most OLX scrapers return only title, price and a thumbnail — and most don't cover Brazil at all. This actor ships the **richest dataset in the category**, pulling from OLX's server-rendered listing data and detail pages:

| Data | Typical scrapers | This actor |
|---|---|---|
| Title, price, currency | ✅ | ✅ |
| Old price + **price-drop flag** | ❌ | ✅ |
| Full typed attributes (brand, model, year, mileage, fuel, gearbox, m², rooms…) | partial | ✅ all of them |
| Location: city, state, neighbourhood, **area code (DDD)** & ZIP | partial | ✅ |
| All photos (full set, not just a thumbnail) | ❌ | ✅ |
| Free-text description | ❌ | ✅ opt-in |
| **Seller name & seller ID** | ❌ | ✅ opt-in |
| Professional / dealer flag + Google rating | ❌ | ✅ |
| **Market price reference** (median / min / max of comparable cars) | ❌ | ✅ opt-in |
| Vehicle condition / inspection report | ❌ | ✅ opt-in |
| Deduplicated **seller / dealer leads** with lead score | ❌ | ✅ opt-in |
| New-listing & price-drop **monitoring** | ❌ | ✅ |

### Use cases

- **Used-car & marketplace intelligence** — track prices, mileage, and OLX's own median/min/max **market price reference** across thousands of cars and motorcycles to spot under- and over-priced listings.
- **Real estate research** — pull for-sale and for-rent listings with price, area, rooms, neighbourhood and ZIP across any Brazilian city or state.
- **Lead generation** — find active **professional sellers and dealerships** (car dealers, real-estate agencies, electronics stores) with their name, location, area code, listing volume and a 0-100 lead score.
- **Price & inventory monitoring** — schedule recurring runs with `monitorMode` to get only **new listings and price drops** for any search — perfect for deal alerts, arbitrage and reselling.
- **Market & demand analysis** — measure supply and pricing by category, brand, model and region across Brazil.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **OLX Brazil Scraper**, enter a **keyword** and pick a **category** (or paste OLX search URLs), then click **Start**.
3. Watch results stream into the dataset — switch between the **Listings** and **Seller leads** views.
4. **Export** as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "query": "civic 2020",
    "category": "autos-e-pecas/carros-vans-e-utilitarios",
    "state": "sp",
    "priceMin": 50000,
    "priceMax": 120000,
    "sortBy": "newest",
    "includeListingDetails": true,
    "outputSellerLeads": true,
    "maxResults": 200
}
```

- **query** — keyword (combined with the category and state). Leave empty to browse a whole category.
- **category** — choose a verified category (cars, motorcycles, real estate for sale/rent, cell phones, computers, video games, home appliances) or *All of Brazil* (use with a keyword). For any other category, paste its URL into **searchUrls**.
- **state** — optional 2-letter state code (`sp`, `rj`, `mg`, `ba`, `rs`…) to narrow results.
- **searchUrls** — paste any OLX search/category URL (filter on olx.com.br and copy the URL); each is paginated automatically.
- **listingUrls** — direct OLX ad URLs for full detail extraction.
- **priceMin / priceMax** — price range in Brazilian Reais (BRL).
- **sortBy** — `relevance` (default) or `newest` (best for monitoring).
- **professionalOnly / withPhotosOnly** — filters.
- **includeListingDetails** *(default false)* — fetch each ad's detail page for the full description, complete photo set, seller name & ID, exact ZIP, condition report and the market price reference. One extra request per listing.
- **outputSellerLeads** *(default false)* — also emit one deduplicated seller/dealer lead per seller.
- **monitorMode** *(default false)* — output only new listings and price changes across scheduled runs.

### Output

One record per listing (`type: "listing"`), plus optional seller leads (`type: "seller"`):

```json
{
    "type": "listing",
    "listId": 1503406377,
    "url": "https://sp.olx.com.br/grande-campinas/autos-e-pecas/carros-vans-e-utilitarios/honda-civic-sed-touring-2-0-16v-aut-hibrido-2024-1503406377",
    "title": "Honda Civic Sed.touring 2.0 16V Aut. (híbrido) 2024",
    "price": 208490,
    "priceText": "R$ 208.490",
    "oldPrice": 213790,
    "priceDropped": true,
    "currency": "BRL",
    "category": "Carros, vans e utilitários",
    "professionalAd": true,
    "publishedDate": "2026-06-17T17:09:46.000Z",
    "state": "SP",
    "municipality": "Campinas",
    "neighbourhood": "Jardim Guanabara",
    "areaCode": "19",
    "zipcode": "13073300",
    "brand": "Honda",
    "model": "Honda Sed.touring 2.0 16V Aut. (híbrido)",
    "vehicleYear": "2024",
    "mileage": 35621,
    "fuel": "Híbrido",
    "gearbox": "Automático",
    "imageCount": 18,
    "images": [{ "url": "https://img.olx.com.br/images/23/233640767221011.jpg", "webp": "https://img.olx.com.br/images/23/233640767221011.webp" }],
    "sellerName": "Localiza Seminovos Barão de Itapura",
    "sellerId": "fbfa0bf9-574f-4e06-8498-0cbf9acdf5b6",
    "sellerType": "professional",
    "description": "HONDA CIVIC 2.0 DI eHEV ADVANCED E-CVT - 2024 / 2024…",
    "marketPriceReference": { "price_min": 198890, "price_p50": 211490, "price_max": 222490, "price_stddev": 5207, "vehicle_count": 363 },
    "conditionReport": { "status": "UNAVAILABLE", "inspector": "Dekra" },
    "attributes": { "vehicle_brand": "Honda", "regdate": "2024", "mileage": "35621", "fuel": "Híbrido", "gearbox": "Automático" },
    "scrapedAt": "2026-06-17T20:29:46.000Z"
}
```

Seller lead record (`type: "seller"`):

```json
{
    "type": "seller",
    "sellerId": "fbfa0bf9-574f-4e06-8498-0cbf9acdf5b6",
    "sellerName": "Localiza Seminovos Barão de Itapura",
    "professional": true,
    "state": "SP",
    "municipality": "Campinas",
    "areaCode": "19",
    "listingsSeen": 2,
    "categories": ["Carros, vans e utilitários"],
    "minPrice": 208490,
    "maxPrice": 222490,
    "avgPrice": 215490,
    "profileUrl": "https://www.olx.com.br/perfil/fbfa0bf9-574f-4e06-8498-0cbf9acdf5b6",
    "leadScore": 67
}
```

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it hourly/daily with `monitorMode` to track only new listings and price drops in a category, city or for specific dealers.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/olx-brazil-scraper').call({
    query: 'civic 2020',
    category: 'autos-e-pecas/carros-vans-e-utilitarios',
    state: 'sp',
    includeListingDetails: true,
    outputSellerLeads: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} listings & seller leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new listings or dealer leads straight into your CRM or sheet.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new listings or price drops.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find Honda Civics under R$120k in São Paulo and list the dealers" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete classifieds, marketplace & lead-gen stack:

- **[Craigslist Scraper](https://apify.com/scrapesage/craigslist-scraper)** — US classifieds: housing, for-sale, services, gigs & jobs with leads.
- **[Gumtree Scraper](https://apify.com/scrapesage/gumtree-scraper)** — UK classifieds: cars, property, jobs & for-sale with seller leads.
- **[eBay Scraper](https://apify.com/scrapesage/ebay-scraper)** — listings, sold-price comps and seller leads from the biggest marketplace.
- **[AliExpress Scraper](https://apify.com/scrapesage/aliexpress-scraper)** — products, live prices, variants, reviews and supplier leads.
- **[Made-in-China Scraper](https://apify.com/scrapesage/made-in-china-scraper)** — B2B suppliers, products and manufacturer leads.
- **[Realtor.ca Scraper](https://apify.com/scrapesage/realtor-ca-scraper)** — Canadian real estate listings with agent & brokerage leads.
- **[Rightmove Scraper](https://apify.com/scrapesage/rightmove-scraper)** — UK property listings and estate-agent leads.
- **[Shopify Store Scraper](https://apify.com/scrapesage/shopify-store-scraper)** — products, variants, prices and merchant leads from any Shopify store.

### Tips

- **Big categories**: OLX returns ~50 listings per page and paginates deep. Narrow with a keyword, price range or a leaf category to reach the most relevant listings first.
- **Region targeting**: add a `state` code, or filter on olx.com.br for a specific city/region and paste the URL into `searchUrls`.
- **Recurring monitoring**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` and `sortBy: "newest"` to track only newly listed items and price drops.
- **Proxies**: keep the default **Residential (Brazil)** proxy — OLX blocks datacenter IPs. The actor retries each request on a fresh session automatically.
- **Cost control**: leave `includeListingDetails` off for fast, cheap runs — search results already include price, full attributes, location, photos **and the seller's name**. Turn it on when you need the free-text description, the seller's public profile id/URL, the exact ZIP code, the vehicle condition report or the market price reference.

### FAQ

**How do I scrape OLX listings for a specific city or state?** Add a `state` code (e.g. `sp`), or filter by city on olx.com.br and paste the URL into `searchUrls`.

**Does it work without the OLX API?** Yes. OLX has no public listings API — this actor reads the same structured data OLX renders into its own public pages, no key or login needed.

**Can I get seller phone numbers?** OLX hides phone numbers behind a logged-in reveal step, so they aren't included. You do get the **seller name, seller ID, profile URL, professional/dealer flag, city and area code (DDD)** — enough to identify and reach active dealers and agencies.

**Can I export to Google Sheets, CSV or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor new listings automatically?** Turn on `monitorMode`, then create a [Schedule](https://docs.apify.com/platform/schedules). Each run outputs only new listings and price changes; add a [webhook](https://docs.apify.com/platform/integrations/webhooks) to push them into your CRM, Slack or sheet.

**A field is null — why?** Some listings genuinely don't publish a price (e.g. "Sob consulta"), a description, or a particular attribute. Fields are `null` only when the data doesn't exist, not because the scraper skipped them.

**Is scraping OLX legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (including Brazil's LGPD for personal data) and OLX's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `query` (type: `string`):

Keyword to search for, e.g. "iphone 15", "civic 2020", "apartamento 2 quartos". Combined with the category and state below. Leave empty to browse a whole category.

## `category` (type: `string`):

OLX category to search. "All of Brazil" searches every category (use it with a keyword). Other options are verified leaf categories you can browse with or without a keyword. For any other category, paste its URL into Search URLs instead.

## `state` (type: `string`):

Optional 2-letter Brazilian state code to narrow results, e.g. "sp", "rj", "mg", "ba", "rs". Requires a category (not used for the "All of Brazil" option).

## `searchUrls` (type: `array`):

Paste OLX Brazil search or category URLs (filter on olx.com.br, then copy the URL). Most flexible way to target any category, region or filter combination. Each URL is paginated automatically.

## `listingUrls` (type: `array`):

Direct OLX ad URLs to extract full detail for (description, seller, specs, market price reference). Each is charged as a full detail record.

## `priceMin` (type: `integer`):

Only return listings priced at or above this value (Brazilian Reais).

## `priceMax` (type: `integer`):

Only return listings priced at or below this value (Brazilian Reais).

## `sortBy` (type: `string`):

Result ordering. "Newest first" is ideal for monitoring fresh listings; "Most relevant" is the OLX default.

## `professionalOnly` (type: `boolean`):

Keep only listings posted by professional sellers (dealerships, agencies, stores). Great for B2B lead generation.

## `withPhotosOnly` (type: `boolean`):

Skip listings that have no photos.

## `includeListingDetails` (type: `boolean`):

Fetch each listing's detail page to add the full free-text description, complete photo set, seller name & ID, exact ZIP code, condition/inspection report and the OLX market price reference. One extra request per listing (charged as a detail record). Off by default for fast, cheap runs — search results are already rich.

## `outputSellerLeads` (type: `boolean`):

After collecting listings, emit one deduplicated seller/dealer lead per seller with active-listing count, categories, price range, Google rating, profile URL and a 0-100 lead score.

## `maxResults` (type: `integer`):

Maximum number of listings to scrape across all searches in this run.

## `maxResultsPerSearch` (type: `integer`):

Maximum listings to collect from each individual search/category URL before moving to the next.

## `monitorMode` (type: `boolean`):

Remember listings across runs in a named key-value store and output only NEW listings and PRICE CHANGES. Combine with an Apify Schedule to build new-listing and price-drop alerts. Works independently of the scheduler.

## `monitorStoreName` (type: `string`):

Named key-value store that remembers seen listings between runs. Use a unique name per monitored search to keep their histories separate (lowercase letters, digits and hyphens).

## `detectPriceChanges` (type: `boolean`):

When monitor mode is on, also re-emit a previously-seen listing when its price changes (monitorEvent = price\_drop / price\_rise), not just brand-new listings.

## `maxConcurrency` (type: `integer`):

How many detail pages render in parallel. Each parallel slot is its own anti-detect browser on its own residential IP, so keep it modest (2-4) for the best Cloudflare pass rate and memory headroom. Only used when 'Include full listing details' or 'Listing URLs' are set — search pages paginate on a single warmed browser.

## `debugMode` (type: `boolean`):

Save a few raw rendered pages to the run's key-value store (DEBUG\_\*) for troubleshooting. Leave off for normal runs.

## `proxyConfiguration` (type: `object`):

Proxy settings. OLX Brazil blocks datacenter IPs — keep the default Apify RESIDENTIAL proxy with country BR. Required for reliable results.

## `urlsFromFile` (type: `string`):

Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically.

## Actor input object example

```json
{
  "query": "civic",
  "category": "",
  "searchUrls": [],
  "listingUrls": [],
  "sortBy": "relevance",
  "professionalOnly": false,
  "withPhotosOnly": false,
  "includeListingDetails": false,
  "outputSellerLeads": false,
  "maxResults": 200,
  "maxResultsPerSearch": 1000,
  "monitorMode": false,
  "monitorStoreName": "olx-brazil-monitor",
  "detectPriceChanges": true,
  "maxConcurrency": 4,
  "debugMode": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "BR"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped listings and seller leads in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "civic",
    "searchUrls": [],
    "listingUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "BR"
    },
    "urlsFromFile": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/olx-brazil-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "civic",
    "searchUrls": [],
    "listingUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "BR",
    },
    "urlsFromFile": "",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/olx-brazil-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "civic",
  "searchUrls": [],
  "listingUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "BR"
  },
  "urlsFromFile": ""
}' |
apify call scrapesage/olx-brazil-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/olx-brazil-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fGEcuDl5ZQO7MFegg/builds/rArqLoyPbiDlQzAui/openapi.json
