# avito scraper (`scraper_guru/avito-maroc-scraper`) Actor

Whether you are building market intelligence dashboards, analyzing the Moroccan real estate and used-car markets, or powering AI integrations, this tool provides clean, structured, and fast data extraction.

- **URL**: https://apify.com/scraper\_guru/avito-maroc-scraper.md
- **Developed by:** [LIAICHI MUSTAPHA](https://apify.com/scraper_guru) (community)
- **Categories:** Developer tools, Lead generation, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## 🇲🇦 Avito.ma Scraper

The most robust, high-performance structured data extractor for **Avito.ma**, Morocco's leading classifieds platform. 

This Actor is engineered to provide precise, clean, and highly-scalable data extraction across all Avito categories—including Vehicles, Real Estate, Electronics, and Jobs. Built with modern, stable parsing logic, it entirely avoids brittle CSS selections by intercepting Avito's underlying JSON data payloads, ensuring unmatched stability.

---

### 🌍 Our Vision: Building the Data Mine for the MENA Region

At the core of our mission is a simple but powerful vision: **to become the definitive digital data mine for the Middle East and North Africa (MENA) region.**

For too long, high-quality, structured market data from the MENA region has been fragmented, inaccessible, or hidden behind unstable UIs. We are changing that by building a comprehensive suite of enterprise-grade APIs and scrapers. Our goal is to empower AI agents, researchers, and enterprises with real-time, defensible access to the MENA digital economy.

This Avito.ma Scraper is a foundational pillar in mapping the Moroccan consumer and real estate landscape.

#### 🔗 Explore Our Other MENA Actors
*We are constantly expanding our ecosystem. Check out our other tools for the MENA market:*
- 🏢 **[Rekrute.com Jobs Scraper](https://apify.com/scraper_guru/rekrute-jobs-scraper)** - Extract job postings and corporate data from Morocco's top recruitment platform.
- 🏠 **[Mubawab.ma Real Estate Scraper](https://apify.com/scraper_guru/mubawab-housing-scraper)** - Deep analytics for Moroccan real estate.
- 🛍️ **[Jumia MENA E-Commerce Scraper](coming soon)** - Product pricing and competitor intelligence.
- 🚗 **[Moteur.ma Scraper](coming soon)** - Specialized Moroccan automotive market data.
*(Stay tuned as we launch more actors across Egypt, UAE, and KSA!)*

---

### ✨ Key Features

- **Robust Data Extraction:** Relies strictly on Avito's Next.js backend JSON (`__NEXT_DATA__`) instead of constantly changing CSS selectors. If the data is on Avito, this actor gets it.
- **Deep Attribute Parsing:** Automatically structures dynamic category attributes (e.g., Mileage, Transmission, Number of Rooms) as clean JSON objects.
- **High-Resolution Images:** Bypasses thumbnails to fetch the full HD URLs for all listing images.
- **Pagination Handling:** Seamlessly navigates through search results to harvest listings at scale.
- **AI-Ready:** Outputs clean, heavily standardized JSON perfectly suited for ingestion into LLM context windows, RAG applications, or vector databases.

---

### 🎯 Use Cases

- **Market Intelligence:** Track inflation, depreciation of used cars, and shifts in real estate valuation across Moroccan cities (Casablanca, Rabat, Marrakech).
- **Lead Generation:** Build comprehensive databases of current market supply and active sellers.
- **Competitor Analysis:** For businesses, track pricing strategies and inventory turnover for specific categories.
- **AI Agent Tooling:** Package this scraper as a tool for autonomous agents to answer questions like, "What is the average price of a 2018 Volkswagen Golf in Casablanca?"

---

### 🛠️ Input Parameters

The Actor uses a simple and flexible JSON input format.

| Field | Type | Description |
| :--- | :--- | :--- |
| `startUrls` | Array | A list of Avito search URLs or category URLs to begin scraping. |
| `maxItems` | Integer | The maximum number of listings to extract. Defaults to 100. |
| `proxyConfiguration` | Object | Proxy setting configuration. **Note: Apify Residential Proxies are highly recommended** to avoid IP blocks and captchas. |

#### Example Input
```json
{
  "startUrls": [
    "https://www.avito.ma/fr/maroc/voitures-%C3%A0_vendre",
    "https://www.avito.ma/fr/casablanca/appartements-%C3%A0_vendre"
  ],
  "maxItems": 500
}
````

***

### 📊 Sample Output (JSON)

The scraper outputs pristine JSON data, organizing the specific parameters dynamically based on the category.

```json
{
  "url": "https://www.avito.ma/fr/casablanca/voitures/Peugeot_208_Diesel_2019_123456",
  "id": 123456789,
  "title": "Peugeot 208 Diesel 2019 Très bon état",
  "price": 115000,
  "currency": "DH",
  "location": {
    "city": "Casablanca",
    "area": "Maârif"
  },
  "attributes": {
    "Marque": "Peugeot",
    "Modèle": "208",
    "Année-Modèle": "2019",
    "Kilométrage": "80 000 - 84 999",
    "Type de carburant": "Diesel",
    "Boite à vitesses": "Manuelle"
  },
  "description": "Je mets en vente ma Peugeot 208 diesel modèle 2019, première main, très bien entretenue...",
  "images": [
    "https://mcdn.avito.ma/images/1234567890.jpg",
    "https://mcdn.avito.ma/images/1234567891.jpg"
  ],
  "scrapedAt": "2026-04-21T14:30:00.000Z"
}
```

***

### 💡 Operational Guidelines & Proxies

Avito.ma employs strict anti-bot measures to protect its data.

- **Small Runs:** For highly targeted, small-scale runs, Datacenter proxies may work.
- **Production Scale:** For serious scraping tasks, you **must use Apify Residential Proxies**. Attempting to scrape thousands of listings without residential IPs will quickly result in captchas and blocks.

### 📫 Support & Custom Requirements

If you encounter structural changes on Avito, or if your enterprise requires customized scraping logic (e.g., bypassing advanced protections to fetch verified seller phone numbers), please open an issue in the Apify platform or contact us. We actively maintain this actor to ensure our MENA data mine remains up-to-date.

# Actor input Schema

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

URLs to start with (search results or category pages).

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

Maximum number of items to scrape.

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

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.avito.ma/fr/maroc/voitures-à_vendre"
    }
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `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 = {
    "startUrls": [
        {
            "url": "https://www.avito.ma/fr/maroc/voitures-à_vendre"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraper_guru/avito-maroc-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 = {
    "startUrls": [{ "url": "https://www.avito.ma/fr/maroc/voitures-à_vendre" }],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scraper_guru/avito-maroc-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.avito.ma/fr/maroc/voitures-à_vendre"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scraper_guru/avito-maroc-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scraper_guru/avito-maroc-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "avito scraper",
        "description": "Whether you are building market intelligence dashboards, analyzing the Moroccan real estate and used-car markets, or powering AI integrations, this tool provides clean, structured, and fast data extraction.",
        "version": "0.0",
        "x-build-id": "3is6ZUC527o1R6din"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraper_guru~avito-maroc-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraper_guru-avito-maroc-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scraper_guru~avito-maroc-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraper_guru-avito-maroc-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scraper_guru~avito-maroc-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraper_guru-avito-maroc-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with (search results or category pages).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "type": "integer",
                        "description": "Maximum number of items to scrape.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies to be used by your crawler."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
