# OLX Brazil Scraper | Anúncios, Prices & Sellers (`piotrv1001/olx-brazil-listings-scraper`) Actor

The OLX Brazil Listings Scraper extracts olx.com.br ads by keyword or search link: title, price, city, neighbourhood, photos, seller type and category attributes, with optional description, CEP and seller name. Filter by state, price and seller; goes past the 5,000-result limit. No login or API key.

- **URL**: https://apify.com/piotrv1001/olx-brazil-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 listings

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🚀 OLX Brazil Scraper: Anúncios, Prices and Sellers

Export **OLX Brazil ads (anúncios)** from olx.com.br as clean JSON, CSV or Excel. The **OLX Brazil Listings Scraper** works from a keyword or any OLX search link, and returns title, price, city, neighbourhood, photos, seller type and every attribute the category has. It's for price trackers, resellers and analysts who need OLX data without an API key or a login.

### 🎯 Use Cases

- **OLX price tracker**: schedule a daily run on a keyword and build your own price history for phones, laptops or appliances.
- **Resale and arbitrage research**: find underpriced items by state, price range and condition.
- **Market research on Brazilian classifieds**: measure supply, typical prices and private versus professional sellers per category.
- **OLX API alternative**: pull ads into a spreadsheet, database or app without building your own integration.
- **New-ad alerts**: sort by newest, run hourly and send fresh ads to Slack, email or a webhook.

### ✨ Features

- **Prices as numbers**: current price, old price and a flag for reduced prices, in BRL.
- **Location**: state, city, neighbourhood and area code (DDD).
- **Category attributes**: brand, model, condition, storage and whatever else the category shows, under `attributes`.
- **Seller signals**: private or professional, featured and pinned ads, online payment and delivery.
- **Keywords or search links**: paste any www.olx.com.br search with its filters, including page number.
- **Past the 5,000-result limit**: OLX stops at 100 pages. Above that, a search is split by state and price band automatically.
- **No duplicates**: an ad found by two searches is saved and charged once.
- **Optional details**: full description, first-listed date, CEP, coordinates when the ad has them, and seller name.

### 🛠️ How It Works

1. **Choose what to search**: fill in the fields or paste a search link from OLX.
2. **Set Max results**: the default is 50.
3. **Run the scraper** and download the results as JSON, CSV or Excel, or pull them through the API.

### ⚙️ Input

| Field | What it does |
| --- | --- |
| **Search queries** | Keywords as you would type them on OLX. Default `iphone`. |
| **Search links** | Any search or category link from www.olx.com.br. Filters and page number are kept. |
| **State** | All of Brazil, or one state. |
| **Sort by** | Most relevant, newest, lowest price or highest price. |
| **Min / Max price** | Price range in R$. |
| **Seller type** | Any, private or professional. |
| **Max results** | Total ads to save. Default 50. |
| **Scrape ad details** | Also open each ad for description, CEP and seller. Off by default. |

```json
{
    "searchQueries": [
        "iphone 13",
        "geladeira"
    ],
    "state": "sp",
    "sortBy": "newest",
    "maxPrice": 3000,
    "sellerType": "private",
    "maxItems": 200
}
```

### 💰 Pricing

You pay per result, and only for what is saved.

| Event | Price |
| --- | --- |
| Actor start (per run, per GB of memory) | $0.00005 |
| Each listing saved | $0.001 |
| Ad details, per listing (only when turned on and loaded) | $0.002 |

Examples, leaving out the start fee of a fraction of a cent:

- 1,000 listings: $1.00
- 1,000 listings with details: $3.00
- 10,000 listings: $10.00

Set a maximum charge per run and the scraper stops there. Duplicates aren't charged, and if an ad's details can't be loaded, the listing is saved without them and you don't pay for details.

### 📦 Sample Output Data

```json
{
    "id": "1541353935",
    "title": "Notebook VAIO FE14 Intel Core i7-1051U 16GB 240GB SSD",
    "price": 2597,
    "priceText": "R$ 2.597",
    "oldPrice": null,
    "currency": "BRL",
    "url": "https://sp.olx.com.br/sao-paulo-e-regiao/informatica/notebooks/notebook-vaio-fe14-intel-core-i7-1051u-16gb-240gb-ssd-1541353935",
    "category": "Notebooks",
    "categoryId": "19020",
    "state": "SP",
    "city": "São Paulo",
    "neighbourhood": "Vila Progresso (Zona Norte)",
    "areaCode": "11",
    "postedAt": "2026-10-31T11:33:17.000Z",
    "isProfessional": true,
    "isFeatured": false,
    "isPinned": false,
    "priceReduced": false,
    "onlinePayment": true,
    "delivery": true,
    "sellerRating": null,
    "imageCount": 6,
    "videoCount": 0,
    "images": [
        "https://img.olx.com.br/images/81/815641330356996.jpg",
        "https://img.olx.com.br/images/80/807616579482450.jpg"
    ],
    "attributes": {
        "category": "Notebooks",
        "info_notebooks_brand": "VAIO",
        "info_notebooks_condition": "Recondicionado",
        "info_notebooks_cpu_brand": "Intel",
        "info_notebooks_cpu_model": "Intel Core i7",
        "info_notebooks_cpu_ram_size": "16 GB",
        "info_notebooks_graphic_card_brand": "Intel",
        "info_notebooks_screen_inches": "14 polegadas",
        "info_notebooks_storage_size": "256 GB",
        "info_notebooks_type": "Notebook",
        "info_notebooks_features": "Inclui acessórios, Inclui SSD"
    },
    "searchInput": "notebook",
    "detailsScraped": true,
    "description": "***PRODUTO RECONDICIONADO*** ***PRODUTO RECONDICIONADO*** ____________________________________ INFORMAÇÕES BÁSICAS Produto usado com marcas de uso, podendo conter leves avarias com…",
    "firstListedAt": "2026-10-31T11:33:17.000Z",
    "zipcode": "02978010",
    "region": "São Paulo e região, SP",
    "latitude": null,
    "longitude": null,
    "sellerName": "Marcosalmeidafuturobrasilreversa",
    "sellerId": "05c9b16d-dcaa-4a4c-a626-6f2f32370644",
    "officialStore": null,
    "officialStoreUrl": null,
    "whatsappAvailable": false,
    "phoneAvailable": false,
    "scrapedAt": "2026-11-01T07:54:11.587Z"
}
```

`attributes` changes by category, so a phone has `electronics_brand` and a fridge has `eletro_refrigerators_type`. `postedAt` is the date OLX shows on the ad, which moves when the seller bumps it; `firstListedAt` (details only) is when the ad was first published.

### 📅 Schedule and Integrate

For price tracking, run daily with the same keywords and compare `price` by `id`. For new-ad alerts, sort by newest and run hourly. Set it up with Apify **Schedules**, then send results to Google Sheets, Zapier, Make, n8n or your own webhook.

### 🤖 Use with AI Agents (MCP)

This Actor works as a tool in Claude, ChatGPT, Cursor and other MCP clients through the Apify MCP server (`https://mcp.apify.com`). An agent can call it with:

```json
{
    "searchQueries": [
        "iphone 13"
    ],
    "state": "rj",
    "maxItems": 20
}
```

### ❓ FAQ

**Does OLX Brazil have an official API?**
OLX Brazil's integration tools are aimed at professional advertisers publishing their own ads, not at reading search results. This Actor is the practical alternative: no API key, no approval, and the results come back as structured data.

**Do I need an OLX account?**
No. It reads public ads, so no login or account is needed.

**Why is a field empty?**
Advertisers fill in different things, and each category has its own attributes. Details fields are only filled when Scrape ad details is on. Phone numbers aren't included, because OLX doesn't show them publicly; `phoneAvailable` and `whatsappAvailable` tell you if the advertiser accepts those contacts.

**How do I track OLX prices?**
Schedule a daily run with your keywords, then compare `price` and `oldPrice` per `id` across runs. Each ad keeps the same `id` for its whole life.

**How many results can I get from one search?**
OLX shows at most 5,000 results per search (100 pages). When you ask for more, the scraper splits the search by state and price band. Ads with no price can be missed once a search is split by price.

### 🔗 Related Scrapers

- [OLX Brazil Real Estate Scraper](https://apify.com/piotrv1001/olx-brazil-real-estate-scraper): typed columns for apartments and houses: m², bedrooms, condo fee, IPTU.
- [OLX Brazil Cars Scraper](https://apify.com/piotrv1001/olx-brazil-cars-scraper): cars and motorcycles with make, model, year and mileage.
- [OLX Listings Scraper](https://apify.com/piotrv1001/olx-listings-scraper): OLX in Poland, Bulgaria, Romania, Portugal and Ukraine.
- [Mercado Libre Listings Scraper](https://apify.com/piotrv1001/mercado-libre-listings-scraper): the biggest new-goods marketplace in Latin America, for price comparison.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords as you would type them on OLX, one per line, for example iphone 13 or geladeira.

## `startUrls` (type: `array`):

Search or category links copied from www.olx.com.br with any filters, for example https://www.olx.com.br/celulares/estado-sp?q=iphone. Used together with the search queries.

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

Limit search queries to one state.

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

Order of the results.

## `minPrice` (type: `integer`):

Only ads priced at this amount or more.

## `maxPrice` (type: `integer`):

Only ads priced at this amount or less.

## `sellerType` (type: `string`):

Private sellers, professional sellers, or both.

## `maxItems` (type: `integer`):

Stop after this many listings in total. Your maximum charge per run also caps the run. Above 5,000, searches are split by state and price band automatically; ads with no price can then be missed.

## `scrapeDetails` (type: `boolean`):

Also open each ad for the full description, first-listed date, CEP, coordinates and seller name. Charged per ad on top of the listing price.

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

Residential proxies in Brazil work best.

## Actor input object example

```json
{
  "searchQueries": [
    "iphone"
  ],
  "state": "all",
  "sortBy": "relevance",
  "sellerType": "any",
  "maxItems": 50,
  "scrapeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "BR"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

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

No description

# 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 = {
    "searchQueries": [
        "iphone"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "BR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/olx-brazil-listings-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 = {
    "searchQueries": ["iphone"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "BR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/olx-brazil-listings-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 '{
  "searchQueries": [
    "iphone"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "BR"
  }
}' |
apify call piotrv1001/olx-brazil-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/olx-brazil-listings-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/ZZpKZsCAKf5F4Nlmz/builds/xOQFKcGmbZe9FsRIe/openapi.json
