# YallaMotor Cars Scraper: UAE Used Car Data (`getascraper/yallamotor-cars-scraper`) Actor

Extract used-car listings from YallaMotor across the UAE, Saudi Arabia, Egypt, and the Gulf. Get price, make, model, year, mileage, and seller data as clean JSON, even where basic scrapers get blocked. Schedule runs, export to Sheets or Airtable. Pay per result, no subscription.

- **URL**: https://apify.com/getascraper/yallamotor-cars-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.60 / 1,000 car listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## 🚗 YallaMotor Cars Scraper

<table width="100%" style="table-layout:fixed;border-collapse:collapse">
<tr>
<td colspan="3" style="padding:14px 18px;background:#ECFDF5;border-top:3px solid #0F766E;border-left:1px solid #99F6E4;border-right:1px solid #99F6E4;border-radius:8px 8px 0 0">
<span style="font-size:16px;font-weight:700;color:#134E4A">UAE and Gulf used-car data, now part of a regional marketplace suite.</span> <span style="font-size:15px;color:#334155">YallaMotor listings sit alongside AutoTrader South Africa and DubiCars coverage, for teams tracking used-car inventory across South Africa, the UAE, and the wider Middle East.</span>
</td>
</tr>
<tr>
<td colspan="3" style="padding:10px 14px;background:#0F766E;border-left:1px solid #99F6E4;border-right:1px solid #99F6E4">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">MIDDLE EAST AND AFRICA USED-CAR MARKETPLACES</span>
<span style="color:#99F6E4;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;South Africa, UAE, and wider Middle East used-car listings in one product line</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border-left:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#FFFFFF;border-radius:0 0 0 8px">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-cb6cBSNcP7QgaNfzZ-QTKTxVKMSF-images_%2842%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/autotrader-za-cars-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">AutoTrader&nbsp;SA</a></span><br>
<span style="color:#57534E;font-size:11px">South Africa's largest car marketplace</span>
</td>
<td style="padding:10px 12px;border-right:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#FFFFFF">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-fNhrHrILPlfsWbJdt-Wtb1FIPTuf-images_%2838%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/dubicars-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">DubiCars&nbsp;UAE</a></span><br>
<span style="color:#57534E;font-size:11px">Public UAE vehicle listing feed</span>
</td>
<td style="padding:10px 12px;border-right:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#ECFDF5;border-radius:0 0 8px 0">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-KyYnxEXfNgAiGsE9u-TLgd6MjZOe-ym-default-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/yallamotor-cars-scraper" style="color:#0F766E;text-decoration:none;font-weight:700;font-size:13px">YallaMotor&nbsp;Gulf</a></span><br>
<span style="color:#0F766E;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
</tr>
</table>

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed;margin:0">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td style="width:100%;padding:24px 28px;background:#ECFDF5;border:1px solid #99F6E4;border-top:4px solid #0F766E;border-radius:12px">
<span style="font-size:23px;font-weight:800;line-height:1.3;color:#1C1917">Used-car data from UAE and Gulf markets, even where basic scrapers get blocked</span><br>
<span style="font-size:15px;line-height:1.6;color:#57534E">YallaMotor guards its listings with tough anti-bot protection that returns most scrapers a hard block. This Actor gets through reliably and hands you clean price, spec, and seller data instead of an empty result.</span>
</td>
</tr>
</tbody>
</table>

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed;margin:0">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #99F6E4;border-right:none;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#134E4A">🛡️ Gets through the block</span><br>
<span style="font-size:12px;color:#57534E">Clears YallaMotor's toughest anti-bot protection instead of returning a 403 or an empty page.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #99F6E4;border-right:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#134E4A">🚘 Full vehicle detail</span><br>
<span style="font-size:12px;color:#57534E">Price, make, model, year, mileage, fuel type, transmission, color, and images in every run.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #99F6E4;border-right:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#134E4A">🔄 Snapshot or ongoing</span><br>
<span style="font-size:12px;color:#57534E">Export once, or track price drops, new listings, and removals with a recurring monitor key.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #99F6E4;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#134E4A">🎯 Finite, honest runs</span><br>
<span style="font-size:12px;color:#57534E">Bounded item caps and a source that fails loudly instead of quietly returning zero rows.</span>
</td>
</tr>
</tbody>
</table>

YallaMotor Cars Scraper collects public used-car listings from YallaMotor across the UAE, Saudi Arabia, Egypt, Kuwait, Qatar, Bahrain, and Oman. Give it a listing URL, a search URL, or a keyword search, and it returns price, vehicle specs, seller signals, and images as clean structured data, ready to filter, compare, or feed into your own pricing and lead-gen tools. Run it on Apify's schedule, chain it into your pipeline through the API, or trigger it from an integration like Make or Zapier.

### 👥 Who uses this Actor?

- **I am a car reseller or dealer.** I track new listings and price drops across UAE and Gulf inventory so I can spot underpriced cars before other buyers do.
- **I am a data engineer.** I need a dependable feed of used-car listings for a price-comparison or lead-gen product, and I cannot have my pipeline break every time the source tightens its bot protection.
- **I am a market analyst.** I track used-car pricing trends across the UAE, Saudi Arabia, Egypt, and the Gulf, and I need numbers I can trust rather than a scraper that silently returns nothing when it gets blocked.

### 🚀 How to use it

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed;margin:18px 0">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td style="width:33.333%;padding:16px 14px;background:#ECFDF5;border:1px solid #99F6E4;border-right:none;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;letter-spacing:1px;color:#0F766E">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick your scope</span><br>
<span style="font-size:12px;color:#57534E">Paste a YallaMotor listing or search URL, or set a keyword search with make, model, price, and year filters.</span>
</td>
<td style="width:33.333%;padding:16px 14px;background:#ECFDF5;border:1px solid #99F6E4;border-right:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;letter-spacing:1px;color:#0F766E">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run the Actor</span><br>
<span style="font-size:12px;color:#57534E">It clears the source's protection, opens each page, and structures every field automatically.</span>
</td>
<td style="width:33.333%;padding:16px 14px;background:#ECFDF5;border:1px solid #99F6E4;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;letter-spacing:1px;color:#0F766E">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export or monitor</span><br>
<span style="font-size:12px;color:#57534E">Download the dataset in your format, or turn on Changes mode for an ongoing price and inventory feed.</span>
</td>
</tr>
</tbody>
</table>

```json
{
    "sourceMode": "listingUrls",
    "startUrls": [
        {
            "url": "https://uae.yallamotor.com/used-cars"
        }
    ],
    "maxItems": 25,
    "maxPagesPerSource": 2,
    "maxConcurrency": 1
}
```

### ⚙️ Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| <code>sourceMode</code> | enum | No | Choose <code>listingUrls</code>, <code>searchUrls</code>, or <code>keywordSearch</code>. URL modes are exclusive. |
| <code>startUrls</code> | array of URLs | Yes, for URL modes | One to 20 public YallaMotor listing or search URLs. |
| <code>keywords</code> | array of strings | Yes, for keyword search | Search terms used only in keyword search mode. |
| <code>market</code>, <code>make</code>, <code>model</code>, <code>sellerType</code>, <code>minYear</code>, <code>maxYear</code>, <code>minPrice</code>, <code>maxPrice</code>, <code>maxMileageKm</code> | enum, text, or integer | No | Narrow a generated keyword search by market, vehicle, seller, price, year, and mileage. |
| <code>blockedResponsePolicy</code> | enum | No | Keeps a blocked or challenge response as a visible source failure, never a false empty result. |
| <code>proxyConfiguration</code> | object | No | Residential Apify Proxy is used by default to clear the source's anti-bot protection. |
| <code>detailLevel</code>, <code>includeImages</code>, <code>includeSellerProfile</code>, <code>includeContacts</code> | enum or boolean | No | Choose which public fields to return. Contacts default to off. |
| <code>maxItems</code>, <code>maxPagesPerSource</code>, <code>maxDetailPages</code>, <code>maxConcurrency</code>, <code>requestDelayMs</code> | integer | No | Keep collection finite. <code>maxItems</code> is the total cap across all sources. |
| <code>runMode</code> | enum | No | <code>snapshot</code> returns current records; <code>changes</code> returns new and changed records plus lifecycle events. |
| <code>monitorKey</code> | string | Yes, for changes mode | Stable name for a recurring Changes run. |
| <code>emitUnchanged</code> | boolean | No | Include unchanged active listings in Changes mode. |

### 📦 Output

Each listing includes identity, vehicle attributes, price, location, seller, image, and change fields. Missing source values are omitted, never replaced with placeholders.

```json
{
    "sourceId": "2131066",
    "identityType": "listing_id",
    "canonicalUrl": "https://uae.yallamotor.com/used-cars/audi/a5-coupe/2012/used-audi-a5-coupe-2012-dubai-2131066",
    "sourceUrl": "https://uae.yallamotor.com/used-cars/search",
    "title": "Used Audi A5 Coupe 40 TFSI Sport (190 HP) 2012",
    "price": 25200,
    "currency": "AED",
    "make": "audi",
    "model": "a5-coupe",
    "year": 2012,
    "mileageKm": 165000,
    "fuelType": "Petrol",
    "transmission": "Automatic",
    "status": "active",
    "changeType": "new",
    "observedAt": "2026-08-19T20:23:49.384Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

| Field | Type | Description |
| --- | --- | --- |
| <code>sourceId</code>, <code>identityType</code>, <code>canonicalUrl</code>, <code>sourceUrl</code> | string | Listing identity and source context. |
| <code>title</code>, <code>description</code>, <code>price</code>, <code>currency</code> | string, number | Listing and price fields. |
| <code>make</code>, <code>model</code>, <code>trim</code>, <code>year</code>, <code>mileageKm</code> | string, integer | Vehicle identity and usage fields. |
| <code>bodyType</code>, <code>fuelType</code>, <code>transmission</code>, <code>drivetrain</code>, <code>color</code>, <code>seats</code>, <code>doors</code>, <code>engine</code> | string, integer | Vehicle specifications. |
| <code>city</code>, <code>country</code>, <code>seller</code>, <code>images</code>, <code>flags</code> | string, object, array | Location, seller, media, and source flags. |
| <code>status</code>, <code>changeType</code>, <code>changes</code>, <code>observedAt</code>, <code>firstSeenAt</code>, <code>lastSeenAt</code> | string, array | Current status and monitoring fields. |

### 🗂️ Dataset views

| View | Use it for |
| --- | --- |
| <code>overview</code>: Listings | A compact vehicle, price, location, status, and URL view. |
| <code>vehicleDetails</code>: Vehicle Details | Make, model, trim, body, fuel, drivetrain, seating, and engine fields. |
| <code>monitoring</code>: Monitoring Changes | New, updated, price, availability, and removal events for a completed run. |

### 💰 Pricing

This Actor runs on a pay-per-result model: you pay only for listings actually returned, never for a blocked or empty run. There is no subscription. Check the Store page for the current price per 1,000 results.

### ⭐ Enjoying YallaMotor Cars Scraper?

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed;margin:18px 0">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td style="padding:20px 24px 14px;background:#ECFDF5;border:1px solid #99F6E4;border-left:5px solid #0F766E;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Getting real UAE and Gulf used-car data instead of a Cloudflare block?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps the next reseller, data engineer, or market analyst find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr style="width:100%">
<td style="padding:0;background:#0F766E;border:1px solid #99F6E4;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/yallamotor-cars-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</tbody>
</table>

### 💡 Tips

- Start with a low <code>maxItems</code> and the default <code>maxConcurrency</code> to see clean output fast before scaling a run up.
- Use <code>runMode: changes</code> with a stable <code>monitorKey</code> to build a recurring price and inventory feed instead of re-downloading a full snapshot every time.
- Prefer a direct listing or search URL over keyword search when you already know the exact YallaMotor page you want. It is the most reliable path.

### ❓ FAQ

#### Why does this Actor need a proxy?

YallaMotor protects its pages with anti-bot measures that block most direct requests. This Actor is built to clear that protection, and residential Apify Proxy is used by default because it clears the source reliably. It does not guarantee access on every single run.

#### What happens when a source cannot be reached?

The source fails clearly. The Actor never reports a blocked scope as an empty market, and a failed source cannot create a false removal event in a monitoring run.

#### Are contacts collected by default?

No. <code>includeContacts</code> is false by default. When explicitly enabled, only visibly public source values are returned.

#### Can I run this on a schedule?

Yes. Use Apify's built-in Scheduler with <code>runMode: changes</code> and a stable <code>monitorKey</code> to get a recurring feed of new listings, price changes, and removals.

### ⚖️ Responsible use

Use public YallaMotor pages in line with the source's terms and applicable law. Do not use this Actor to bypass access controls for purposes beyond public data collection, or to infer that unavailable source data means unavailable inventory.

### 🔗 Other actors

- [Mourjan Scraper: MENA Classifieds Monitor](https://apify.com/getascraper/mourjan-scraper) ↗: Public listings across property, cars, jobs, and services.
- [Lelong Malaysia Scraper: Product Price Monitor](https://apify.com/getascraper/lelong-my-scraper) ↗: Working product, price, stock, seller, shipping, and change records.
- [OpenSooq Scraper السوق المفتوح: MENA Data API](https://apify.com/getascraper/opensooq-scraper) ↗: Public regional classifieds.
- [Haraj scraper: KSA classified listings](https://apify.com/getascraper/haraj-scraper) ↗: Public Saudi classifieds.

# Actor input Schema

## `sourceMode` (type: `string`):

Choose direct listing URLs, search URLs, or a bounded keyword search.

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

Provide one to 20 public YallaMotor listing or search URLs when using a URL source mode.

## `keywords` (type: `array`):

Search terms used only in keyword search mode.

## `market` (type: `string`):

Market used when the Actor builds a keyword search URL.

## `make` (type: `string`):

Optional vehicle make filter for generated searches.

## `model` (type: `string`):

Optional vehicle model filter for generated searches.

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

Optional seller preference for generated searches.

## `minYear` (type: `integer`):

Optional lower model-year limit.

## `maxYear` (type: `integer`):

Optional upper model-year limit.

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

Optional lower price limit in the source currency.

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

Optional upper price limit in the source currency.

## `maxMileageKm` (type: `integer`):

Optional upper mileage limit.

## `blockedResponsePolicy` (type: `string`):

Blocked or challenge responses fail the source and never become an empty inventory result.

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

Residential Apify Proxy is required to reliably clear YallaMotor's Cloudflare managed challenge. Datacenter proxy or no proxy will frequently fail.

## `detailLevel` (type: `string`):

Choose listing cards only or the full public listing fields available to the source.

## `includeImages` (type: `boolean`):

Include publicly listed image URLs when available.

## `includeSellerProfile` (type: `boolean`):

Include public seller name, type, and profile URL when available.

## `includeContacts` (type: `boolean`):

Return source-published phone or email fields only when explicitly enabled.

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

Total listing cap across all sources and keywords.

## `maxPagesPerSource` (type: `integer`):

Maximum listing or search pages to inspect for each source URL.

## `maxDetailPages` (type: `integer`):

Maximum public detail pages to request, capped by Maximum Items at runtime.

## `runMode` (type: `string`):

Snapshot returns current records. Changes returns new and changed records plus safe lifecycle events.

## `monitorKey` (type: `string`):

Stable name for a recurring Changes run. Required when Run Mode is Changes.

## `emitUnchanged` (type: `boolean`):

Include unchanged active listings in Changes mode.

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

Bounded number of stealth browser sessions running at once.

## `requestDelayMs` (type: `integer`):

Delay before each page navigation.

## Actor input object example

```json
{
  "sourceMode": "listingUrls",
  "startUrls": [
    {
      "url": "https://uae.yallamotor.com/used-cars/search"
    }
  ],
  "keywords": [
    "Toyota Camry"
  ],
  "market": "uae",
  "make": "",
  "model": "",
  "sellerType": "any",
  "blockedResponsePolicy": "failSource",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "detailLevel": "fullListing",
  "includeImages": true,
  "includeSellerProfile": true,
  "includeContacts": false,
  "maxItems": 25,
  "maxPagesPerSource": 2,
  "maxDetailPages": 25,
  "runMode": "snapshot",
  "monitorKey": "",
  "emitUnchanged": false,
  "maxConcurrency": 1,
  "requestDelayMs": 1000
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

## `monitorState` (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 = {
    "sourceMode": "listingUrls",
    "startUrls": [
        {
            "url": "https://uae.yallamotor.com/used-cars/search"
        }
    ],
    "keywords": [
        "Toyota Camry"
    ],
    "market": "uae",
    "make": "",
    "model": "",
    "sellerType": "any",
    "blockedResponsePolicy": "failSource",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    },
    "detailLevel": "fullListing",
    "includeImages": true,
    "includeSellerProfile": true,
    "includeContacts": false,
    "maxItems": 25,
    "maxPagesPerSource": 2,
    "maxDetailPages": 25,
    "runMode": "snapshot",
    "monitorKey": "",
    "emitUnchanged": false,
    "maxConcurrency": 1,
    "requestDelayMs": 1000
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/yallamotor-cars-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 = {
    "sourceMode": "listingUrls",
    "startUrls": [{ "url": "https://uae.yallamotor.com/used-cars/search" }],
    "keywords": ["Toyota Camry"],
    "market": "uae",
    "make": "",
    "model": "",
    "sellerType": "any",
    "blockedResponsePolicy": "failSource",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
    "detailLevel": "fullListing",
    "includeImages": True,
    "includeSellerProfile": True,
    "includeContacts": False,
    "maxItems": 25,
    "maxPagesPerSource": 2,
    "maxDetailPages": 25,
    "runMode": "snapshot",
    "monitorKey": "",
    "emitUnchanged": False,
    "maxConcurrency": 1,
    "requestDelayMs": 1000,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/yallamotor-cars-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 '{
  "sourceMode": "listingUrls",
  "startUrls": [
    {
      "url": "https://uae.yallamotor.com/used-cars/search"
    }
  ],
  "keywords": [
    "Toyota Camry"
  ],
  "market": "uae",
  "make": "",
  "model": "",
  "sellerType": "any",
  "blockedResponsePolicy": "failSource",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "detailLevel": "fullListing",
  "includeImages": true,
  "includeSellerProfile": true,
  "includeContacts": false,
  "maxItems": 25,
  "maxPagesPerSource": 2,
  "maxDetailPages": 25,
  "runMode": "snapshot",
  "monitorKey": "",
  "emitUnchanged": false,
  "maxConcurrency": 1,
  "requestDelayMs": 1000
}' |
apify call getascraper/yallamotor-cars-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/yallamotor-cars-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/KyYnxEXfNgAiGsE9u/builds/BAwHIeJhGeDQC0Ked/openapi.json
