YallaMotor Scraper | GCC Used & New Cars Marketplace
Pricing
from $1.50 / 1,000 results
YallaMotor Scraper | GCC Used & New Cars Marketplace
Scrape YallaMotor.com car listings across UAE, Saudi Arabia, Kuwait, Qatar, Bahrain & Egypt. Used & new cars with price, mileage, specs, seller info & images. Multi-country price comparison.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
3
Monthly active users
12 days ago
Last modified
Categories
Share
YallaMotor Scraper — GCC Used & New Car Marketplace Data Extractor (UAE, Saudi, Qatar, Kuwait, Bahrain, Oman, Egypt)
The most complete YallaMotor.com data extraction tool on Apify. Pull live used and new car listings from every YallaMotor country subdomain — UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, Oman, Egypt — with price, mileage, year, trim, body type, transmission, fuel type, dealer info and images ready for dealer competitive intelligence, used-car arbitrage, residual value modeling, fleet sourcing and automotive market research across the Gulf Cooperation Council.
What This Actor Does
The YallaMotor Scraper is a production-ready Apify Actor that extracts public car listings from YallaMotor.com — the largest automotive marketplace in the Middle East and the dominant new and used car aggregator across the Gulf Cooperation Council (GCC). YallaMotor consolidates inventory from thousands of franchised dealers, used-car traders, certified pre-owned programs and individual sellers across seven country subdomains, making it the de facto pricing benchmark for cars sold in Dubai, Abu Dhabi, Sharjah, Ajman, Riyadh, Jeddah, Dammam, Doha, Kuwait City, Manama, Muscat and Cairo.
In a single run the actor returns structured records covering:
- Used cars — listings from
{country}.yallamotor.com/used-cars/...across every supported market - New cars — manufacturer-recommended pricing from
www.yallamotor.com/new-cars/...and country pages - All major makes — Toyota, Nissan, Mitsubishi, Honda, Hyundai, Kia, Mercedes-Benz, BMW, Audi, Porsche, Lexus, Infiniti, Land Rover, Range Rover, Ford, Chevrolet, GMC, Cadillac, Jeep, MG, Geely, Chery, Tesla, Lucid, Suzuki, Mazda, Renault, Peugeot and dozens more
- Country-specific currencies — AED (UAE), SAR (Saudi), QAR (Qatar), KWD (Kuwait), BHD (Bahrain), OMR (Oman), EGP (Egypt) — normalized per listing
- Seller context — dealer vs individual, dealer name when published, and tel-link phone numbers when the optional detail-page enrichment is enabled
- Specs — year, mileage (km), transmission, fuel type, body type, exterior color and trim where present
Each record includes a stable listingId, the original YallaMotor url, currency-coded price, normalized mileage, a country tag (UAE, Saudi Arabia, Qatar …) and an ISO-8601 scrapedAt timestamp — making this the fastest way to populate or refresh a GCC automotive dataset for dealer benchmarking, arbitrage, finance pricing, insurance underwriting, fleet research or export-trade intelligence.
Why scrape YallaMotor yourself when this exists?
YallaMotor renders its listings through Next.js / React Server Components and serves seven different country subdomains, each with its own URL conventions, currencies and city taxonomies. Every team that tries to roll their own scraper runs into the same wall:
- Country split — UAE, Saudi, Qatar, Kuwait, Bahrain, Oman, Egypt all live on separate subdomains with subtly different markup
- React Server Components — pages are hydrated with serialized
__NEXT_DATA__and RSC streaming payloads that look nothing like a simple HTML grid - Anti-bot — Cloudflare and bot-mitigation layers throw 403 / 429 / 503 the moment a script hits the same IP twice
- Dynamic price/mileage rendering inside ever-changing utility-CSS class names (Tailwind hashes change between deploys)
- Multi-currency price strings:
AED 79,500,SAR 119,000,QAR 145 000,KWD 5 250,BHD 4 200,EGP 1 250 000need regex per market - Pagination via
?page=Nquery strings with no API to discover total page counts - Lazy-loaded card images served from
b8cdnandyallamotorCDNs with srcset attributes - City detection drifts between Arabic and English (Dubai/دبي, Jeddah/جدة, Doha/الدوحة)
- JSON-LD
Schema.org/Carblocks are present on some templates and missing on others — needs both a structured-data strategy and a card-parsing fallback - Detail pages add another HTTP round-trip per listing for phone numbers and dealer names, which doubles or triples runtime if you do it naively
This actor solves all of that. It rotates Apify residential / datacenter proxies per session, tries the RSC streaming endpoint first, falls back to JSON-LD parsing, falls back again to wide-context HTML card parsing, normalizes currencies and city names, and emits one flat record per listing — ready to drop into Postgres, BigQuery, Snowflake, Power BI, Excel or your dealer-management system.
Quick Start
One-Click Run
- Open the actor page on the Apify Store
- Click Try for free
- Pick your Countries (e.g.
uae,sa) and Makes (e.g.toyota,nissan) — or paste Start URLs directly - Hit Start — your dataset appears under Storage → Datasets in JSON, CSV or Excel
API Run (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/yallamotor-scraper").call(run_input={"countries": ["uae", "sa", "qa"],"listingType": "used","makes": ["toyota", "nissan", "bmw"],"scrapeDetails": False,"maxRecords": 500,"requestDelay": 800,"proxyConfiguration": {"useApifyProxy": True}})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["make"], item["model"], item["year"],item["price"], item["currency"], item["city"], item["country"])
API Run (Node.js / TypeScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/yallamotor-scraper').call({countries: ['uae'],listingType: 'used',makes: ['mercedes-benz'],models: ['g-class'],scrapeDetails: true,maxRecords: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Pulled ${items.length} used G-Class listings from the UAE`);
API Run (cURL)
curl -X POST "https://api.apify.com/v2/acts/haketa~yallamotor-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"countries": ["uae","sa","qa","kw","bh"],"listingType": "used","makes": ["toyota"],"maxRecords": 1000}'
API Run (Start URLs only)
If you already have YallaMotor search or filter URLs from the browser, paste them as-is:
{"startUrls": ["https://uae.yallamotor.com/used-cars/toyota/land-cruiser","https://sa.yallamotor.com/used-cars/nissan/patrol","https://qa.yallamotor.com/used-cars/lexus"],"scrapeDetails": false,"maxRecords": 2000}
How It Works
YallaMotor.com runs on a Next.js stack with React Server Components and serves a different subdomain per market. This actor uses a three-strategy extraction pipeline that survives the platform's frequent UI redesigns and Tailwind class reshuffles.
| Layer | URL pattern | Engine | Notes |
|---|---|---|---|
| Used cars (per country) | https://{cc}.yallamotor.com/used-cars/{make}/{model}?page=N | got-scraping + RSC headers | Tries Next.js RSC payload first for structured JSON |
| New cars (global) | https://www.yallamotor.com/new-cars/{make}/{model} | got-scraping + Cheerio | Manufacturer pricing & spec pages |
| Detail pages | /used-cars/{make}/{model}/{year}/used-{slug}-{listingId} | got-scraping + Cheerio | Optional — adds phone, dealer name, full image set |
Engineering details
- RSC endpoint discovery — sends
RSC: 1,Next-Router-State-TreeandNext-Urlheaders to coax YallaMotor's Next.js server into returning the streaming JSON payload, then walks the tree looking for objects that contain amake/brandplusprice/year - JSON-LD structured data parser — extracts
Schema.org/Car,Vehicle,Product,Offer,IndividualProductandAutoDealerblocks; pulls price, currency, mileage, color, transmission, fuel type, body type, seller name, seller type and images straight from the structured payload - HTML card fallback — when neither RSC nor JSON-LD is present, identifies listing anchors via the numeric-ID URL pattern (
-\d{5,}) and pulls price/mileage/specs from wide-context text (link, parent, grandparent, great-grandparent) to survive Tailwind hash churn - Multi-currency price extraction — regex set covers
AED,SAR,EGP,KWD,QAR,BHDwith both prefix and suffix forms; filters placeholder prices (<=1) and rejects formatting noise - Country detection from subdomain — parses the host (
uae.,sa.,eg.,kw.,qa.,bh.) and maps to canonical country name + ISO currency - Per-country city dictionaries — recognizes
Dubai,Abu Dhabi,Sharjah,Ajman,Riyadh,Jeddah,Cairoand more from card copy - Proxy rotation — every request gets a fresh
session-ym{counter}proxy session so anti-bot doesn't fingerprint a single IP - Retry ladder — 3 attempts per fetch, exponential 2× backoff on 403/429/500/502/503, with a final non-proxy attempt as a circuit breaker
- Deduplication — by
listingId, thenurl, thentitle— so RSC + JSON-LD + HTML strategies that surface the same car only get pushed once - Detail page enrichment (optional) — toggling
scrapeDetails: truevisits each listing fortel:phone numbers, dealer name and the full CDN image array (b8cdn/yallamotorhosts) - Streaming push — every parsed listing goes straight to the Apify Dataset; nothing is buffered in memory beyond the current page
Input Parameters
{"startUrls": [],"countries": ["uae", "sa"],"listingType": "used","makes": ["toyota", "nissan"],"models": [],"scrapeDetails": false,"maxRecords": 500,"maxPages": 0,"requestDelay": 800,"proxyConfiguration": { "useApifyProxy": true }}
Parameter reference
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array<string> | [] | Direct YallaMotor URLs. Overrides countries/makes/models when provided. Use this when you already have search or filter URLs from the browser. |
countries | array<string> | ["uae"] | Country subdomains: uae, sa (Saudi Arabia), eg (Egypt), kw (Kuwait), qa (Qatar), bh (Bahrain). One run per combination. |
listingType | enum | used | used = used cars only, new = new cars only, all = both. |
makes | array<string> | ["toyota"] | Lowercase slugs as they appear in YallaMotor URLs: toyota, nissan, bmw, mercedes-benz, hyundai, kia, land-rover, range-rover, lexus, infiniti, mg, geely, chery, tesla, porsche, audi, cadillac. Empty = all makes. |
models | array<string> | [] | Lowercase model slugs: camry, corolla, land-cruiser, patrol, kicks, 3-series, 5-series, g-class, g-wagen, range-rover-sport. Requires a makes filter. |
scrapeDetails | boolean | false | Visit each listing page for full specs, the full image array, dealer name and phone (when published). Slower (~3-5× runtime) but richer. |
maxRecords | integer | 0 | Hard cap on total listings across all tasks. 0 = unlimited. |
maxPages | integer | 0 | Hard cap on pages per {country, type, make, model} combination. 0 = paginate until no more results. |
requestDelay | integer | 800 | Milliseconds between requests. 500–1500 recommended. Lower values risk 429s on hot makes. |
proxyConfiguration | object | { useApifyProxy: true } | Apify proxy block. Residential or datacenter both work; residential is more reliable for high-volume scrapes. |
Output Schema
Every listing — used or new, from any country — uses the same flat JSON schema so a single downstream pipeline ingests the entire dataset.
| Field | Type | Description |
|---|---|---|
listingId | string | null | Stable YallaMotor numeric listing ID (extracted from URL trailing -\d{5,}). Persists across runs. |
listingType | string | used or new. |
title | string | null | Full listing headline as published — e.g. Used Toyota Land Cruiser 2022 GR Sport Dubai. |
make | string | null | Manufacturer — Toyota, Nissan, BMW, Mercedes-Benz, Lexus. |
model | string | null | Model — Land Cruiser, Patrol, 3 Series, G-Class. |
year | integer | null | Model year (4-digit). |
trim | string | null | Trim or variant — GR Sport, Titanium, xDrive40i. |
price | number | null | Asking price in currency units. Placeholder prices (≤ 1) are dropped. |
currency | string | null | ISO currency code — AED, SAR, QAR, KWD, BHD, OMR, EGP. |
mileage | number | null | Odometer reading in kilometers. Always null for new cars. |
city | string | null | City as published — Dubai, Abu Dhabi, Sharjah, Riyadh, Jeddah, Doha, Kuwait City, Manama, Muscat, Cairo. |
country | string | null | Canonical country name — UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, Oman, Egypt. |
color | string | null | Exterior color when published. |
transmission | string | null | Automatic, Manual, CVT. |
fuelType | string | null | Petrol, Diesel, Hybrid, Electric. |
bodyType | string | null | Sedan, SUV, Hatchback, Coupe, Pickup, Van, Convertible. |
sellerType | string | null | Dealer, Individual, Certified. |
sellerName | string | null | Dealer / showroom name when published (e.g. Al-Futtaim Toyota, Mohamed Yousuf Naghi Motors). |
phone | string | null | Seller phone (E.164-ish or local) — populated only when scrapeDetails: true. |
images | array<string> | null | CDN URLs for listing photos (YallaMotor / b8cdn). Full array when scrapeDetails: true. |
url | string | null | Canonical listing URL (no UTM params). |
scrapedAt | string | ISO-8601 UTC timestamp of extraction. |
Example: used SUV (Dubai)
{"listingId": "2092807","listingType": "used","title": "Used Toyota Land Cruiser 2022 GR Sport Dubai","make": "Toyota","model": "Land Cruiser","year": 2022,"trim": "GR Sport","price": 389000,"currency": "AED","mileage": 28500,"city": "Dubai","country": "UAE","color": "Pearl White","transmission": "Automatic","fuelType": "Petrol","bodyType": "SUV","sellerType": "Dealer","sellerName": "Al-Futtaim Certified Pre-Owned","phone": "+971-4-555-0100","images": ["https://cdn.b8cdn.com/.../land-cruiser-2022-front.webp","https://cdn.b8cdn.com/.../land-cruiser-2022-interior.webp"],"url": "https://uae.yallamotor.com/used-cars/toyota/land-cruiser/2022/used-toyota-land-cruiser-2022-dubai-2092807","scrapedAt": "2026-05-16T08:30:00.000Z"}
Example: new sedan (Riyadh)
{"listingId": "99999","listingType": "new","title": "2026 Nissan Sunny SV — Saudi Arabia","make": "Nissan","model": "Sunny","year": 2026,"trim": "SV","price": 67900,"currency": "SAR","mileage": null,"city": "Riyadh","country": "Saudi Arabia","color": null,"transmission": "CVT","fuelType": "Petrol","bodyType": "Sedan","sellerType": "Dealer","sellerName": "Mohamed Yousuf Naghi Motors","phone": null,"images": ["https://cdn.b8cdn.com/.../sunny-2026.webp"],"url": "https://sa.yallamotor.com/new-cars/nissan/sunny","scrapedAt": "2026-05-16T08:30:00.000Z"}
Example: budget hatchback (Cairo)
{"listingId": "1844551","listingType": "used","title": "Used Hyundai i10 2019 Cairo","make": "Hyundai","model": "I10","year": 2019,"trim": null,"price": 285000,"currency": "EGP","mileage": 64000,"city": "Cairo","country": "Egypt","color": null,"transmission": "Manual","fuelType": "Petrol","bodyType": "Hatchback","sellerType": "Individual","sellerName": null,"phone": null,"images": null,"url": "https://eg.yallamotor.com/used-cars/hyundai/i10/2019/used-hyundai-i10-2019-cairo-1844551","scrapedAt": "2026-05-16T08:30:00.000Z"}
Country, Currency & Subdomain Reference
| Country | Subdomain | Currency | Major listing cities |
|---|---|---|---|
| United Arab Emirates | uae.yallamotor.com | AED | Dubai, Abu Dhabi, Sharjah, Ajman, Ras al Khaimah, Fujairah, Umm al Quwain |
| Saudi Arabia | sa.yallamotor.com | SAR | Riyadh, Jeddah, Dammam, Khobar, Mecca, Medina, Taif |
| Qatar | qa.yallamotor.com | QAR | Doha, Al Rayyan, Al Wakrah, Lusail |
| Kuwait | kw.yallamotor.com | KWD | Kuwait City, Hawalli, Salmiya, Farwaniya |
| Bahrain | bh.yallamotor.com | BHD | Manama, Muharraq, Riffa |
| Oman | om.yallamotor.com | OMR | Muscat, Salalah, Sohar |
| Egypt | eg.yallamotor.com | EGP | Cairo, Alexandria, Giza |
Tip: Pass
countries: ["uae","sa","qa","kw","bh"]to fan out across all five core GCC markets in a single run. Currency is normalized per record so downstream pipelines can convert to USD/EUR with one column lookup.
Listing Type & Seller Reference
Listing type
| Value | Returned from | Mileage present? |
|---|---|---|
used | /used-cars/... paths on each country subdomain | Usually yes |
new | /new-cars/... paths (global + per country) | Always null |
Seller type (when published)
| Value | Meaning |
|---|---|
Dealer | Franchised dealer or independent showroom |
Certified | Manufacturer or dealer-network certified pre-owned |
Individual | Private seller / classified-style listing |
Body type taxonomy (regex-detected)
Sedan · SUV · Hatchback · Coupe · Pickup · Van · Convertible
Fuel type taxonomy
Petrol · Diesel · Hybrid · Electric
Transmission taxonomy
Automatic · Manual · CVT
Use Cases
Car Dealer Competitive Intelligence
GCC franchised dealers and used-car showrooms use this dataset to:
- Track every comparable Land Cruiser, Patrol, Prado, G-Class, Range Rover or 4Runner posted in your emirate or city by year, mileage and trim
- Benchmark your asking price against the live market median for the same year/mileage cluster, refreshed daily on schedule
- Spot under-priced inventory at competitor dealers within 24 hours of posting — useful for wholesale buy-side teams
- Monitor days-on-market by diffing successive runs — if a listing disappears between runs it likely sold or was repriced
- Map dealer market share per make/model in Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City and Manama
Used-Car Arbitrage & Cross-Border Trade
Wholesale traders shipping cars between GCC markets (and to Africa, Central Asia and Eastern Europe) rely on multi-country pricing data:
- Find arbitrage windows where the same year/spec Toyota Land Cruiser is materially cheaper in one GCC country than another after duties
- Build acquisition lists of Dubai-listed German exec cars (BMW 7 Series, Mercedes-Benz S-Class, Audi A8) that move at strong margins in Pakistan, Kenya, Tanzania and Georgia
- Run currency-normalized comparisons — every record has
price+currency; a single FX join produces USD-comparable inventory - Detect "GCC Specs" vs "American Specs" vs "Canadian Specs" by parsing titles and trims — critical for re-export valuation
- Quantify supply elasticity across model years before committing capital to a container load
Auto Finance, Insurance & Residual Value Modeling
GCC banks, captive finance arms and insurers ingest the dataset to:
- Calibrate residual value curves by
make × model × year × mileage band × countryusing actual asking prices, not stale guidebook values - Refresh LTV (loan-to-value) collateral pricing monthly for used-car loan books
- Model insurance premium tiers that respond to current market value rather than purchase invoice
- Detect total-loss salvage value for write-off claims by sampling listings in the same year/mileage cluster
- Stress-test EV residuals for Tesla, Lucid, BYD, Geely Geometry and other entrants where guidebook data is thin
Fleet Manager & Corporate Procurement Research
Corporate fleet managers, ride-hailing operators, logistics companies and government procurement teams use the data to:
- Track new-car list prices across UAE, Saudi, Qatar and Kuwait for upcoming fleet renewals
- Source bulk used inventory — pull every 2022–2024 Toyota Camry in
Sedanbody type under a price ceiling for a single-shot RFP - Benchmark TCO inputs by mapping mileage curves against listing prices
- Negotiate with dealers using verifiable market evidence rather than dealer-published "best price" rhetoric
Automotive Market Reports & Investor Research
Equity analysts, consultancies and trade-press journalists use YallaMotor data to:
- Quantify GCC EV adoption — measure listing share of
fuelType: Electricover time - Track Chinese-OEM market entry — listing counts and price points for MG, Geely, Chery, BYD, Changan and Haval across markets
- Cover Saudi Vision 2030 mobility shifts — Riyadh & Jeddah inventory composition by body type and origin
- Source numbers for investor presentations on used-car platform consolidation in MENA
- Spot post-COVID supply normalization — average days-on-market and price index trends per metro
Car-Export Brokers & Container Shippers
Export-trade brokers in Sharjah, Dubai's Al Awir, Riyadh's Dirah and Cairo's Maadi specifically use cross-border listing data to:
- Identify export-grade inventory — high-mileage diesels for African markets, low-mileage Japanese kei-spec hatchbacks for Pakistan, executive sedans for Central Asia
- Pre-quote container loads by pulling 20-40 candidate cars per shipment with verified prices
- Document chain-of-purchase evidence for customs and bills of lading
- Track Saudi & UAE export bans / restricted models by spotting sudden listing volume changes
Insurance Claims & Salvage Auction Pricing
Salvage auction operators and total-loss adjusters use the dataset for:
- Setting reserve prices on damaged vehicles by sampling intact-market comps
- Validating settlement offers to insured parties with hard market data
- Tracking salvage-title resale velocity when the same VIN's "salvage" listing reappears later
- Benchmarking write-off thresholds per make/model/year in each GCC market
Automotive Lead Generation & Marketing
Aftermarket parts vendors, car-wash franchises, ceramic-coat detailers, window-tint installers and roadside-assist subscriptions target by:
- Dealer name extraction — build a contact list of every showroom in Dubai, Riyadh or Doha posting active inventory
- Vehicle-make targeting — push Land Cruiser-specific aftermarket parts to dealers actively listing Land Cruisers
- Geographic segmentation — city-level marketing rosters for SMS/WhatsApp campaigns
- Lead handoff to CRMs — feed
sellerName+phone(whenscrapeDetails: true) directly into Salesforce, HubSpot or Pipedrive
Academic & Public-Policy Research
University economics departments, GCC central banks and energy-transition researchers consume the data for:
- Studying EV transition pace in oil-producing economies
- Measuring consumer purchasing power through used-car price indexes
- Analyzing import-tariff effects by comparing pre/post-policy listing prices
- Cross-referencing fuel-subsidy reform with hybrid/EV share shifts in listings
Sample Queries & Recipes
Recipe 1 — Live Dubai used-Toyota inventory snapshot
{"countries": ["uae"],"listingType": "used","makes": ["toyota"],"scrapeDetails": false,"maxRecords": 1000}
Goal: a single CSV of every used Toyota currently listed in the UAE for dealer competitive analysis.
Recipe 2 — All-GCC Land Cruiser price benchmark
{"countries": ["uae","sa","qa","kw","bh"],"listingType": "used","makes": ["toyota"],"models": ["land-cruiser"],"maxRecords": 0}
Goal: cross-border arbitrage scan for Land Cruisers across the core GCC five.
Recipe 3 — New-car list-price refresh, three markets
{"countries": ["uae","sa","qa"],"listingType": "new","makes": ["nissan","hyundai","mg"],"maxPages": 5}
Goal: monthly refresh of OEM list prices for finance/leasing residual modelling.
Recipe 4 — German exec cars in Dubai for re-export
{"countries": ["uae"],"listingType": "used","makes": ["mercedes-benz","bmw","audi","porsche"],"scrapeDetails": true,"maxRecords": 500}
Goal: full inventory + dealer contacts for a re-export buying trip.
Recipe 5 — EV-only Saudi & UAE market scan
{"countries": ["uae","sa"],"listingType": "all","makes": ["tesla","lucid","byd","mg"],"maxRecords": 0}
Goal: track EV listing share and pricing for an investor brief — filter by fuelType: "Electric" downstream.
Recipe 6 — Sample 50 listings to validate before full run
{"countries": ["uae"],"listingType": "used","makes": ["nissan"],"maxRecords": 50}
Goal: dry-run for new pipelines, costs pennies.
Recipe 7 — Direct Start URLs (you already filtered in the browser)
{"startUrls": ["https://uae.yallamotor.com/used-cars/dubai/toyota/land-cruiser","https://sa.yallamotor.com/used-cars/riyadh/nissan/patrol","https://qa.yallamotor.com/used-cars/doha/lexus/lx-570"],"scrapeDetails": true,"maxRecords": 300}
Goal: precise pulls from filtered city+make+model pages.
Integration Examples
Google Sheets (via Apify integration)
- Schedule this actor daily at 06:00 UTC (10:00 Dubai)
- Add the Export to Google Sheets integration on the run
- Open the morning sheet — a fresh snapshot of every Toyota Land Cruiser priced in AED across the UAE, sortable by mileage
Make.com / Zapier / n8n
Use the Apify connector to trigger downstream flows on:
- New listings (current run minus previous)
- Price drops on a watched
listingId - Status disappearance (
listingIdin yesterday's run, missing today → likely sold) - New dealer entrants — first time a
sellerNameappears in the dataset
Power BI / Tableau / Looker
Connect the Apify REST dataset endpoint as a live data source. Build dashboards covering:
- Median price by
make × model × year × countryheatmap - EV share trend line per market
- Listing volume by city (Dubai vs Abu Dhabi vs Riyadh vs Doha)
- Dealer leaderboards by inventory count
Postgres / Snowflake / BigQuery
Set an Apify webhook to POST every run's defaultDatasetId to your ingestion endpoint. Recommended primary key:
CREATE TABLE yallamotor_listings (listing_id TEXT,country TEXT,scraped_at TIMESTAMPTZ,PRIMARY KEY (listing_id, country, scraped_at));
This preserves a history of every price change per car.
Salesforce / HubSpot CRM enrichment
Run nightly with scrapeDetails: true, then upsert dealer contacts keyed on sellerName + city. Status changes (a dealer's listing count dropping 50% in a week) can auto-create Tasks for account managers.
Excel / CSV for procurement teams
Apify exports the dataset directly to XLSX, CSV, JSON, JSON Lines, RSS and HTML — non-engineering procurement teams can open the file in Excel and pivot on make × model × year × city instantly.
Major GCC Markets at a Glance
| Metro | Country | Listing focus | Notes |
|---|---|---|---|
| Dubai | UAE | Used + new, all segments | Largest single market on YallaMotor; deep German exec & SUV inventory |
| Abu Dhabi | UAE | New + government fleet trade-ins | Strong Japanese SUV demand |
| Sharjah | UAE | Export-grade used, mid-tier | Cheaper average prices; Al Awir / Sharjah used-car hubs |
| Ajman | UAE | Budget used | Lowest average prices in the UAE |
| Riyadh | Saudi Arabia | Mixed new + used | Saudi's largest car market by listings |
| Jeddah | Saudi Arabia | Used + import-spec | Coastal trade hub; strong used Japanese supply |
| Dammam / Khobar | Saudi Arabia | Eastern province new + used | Aramco-influenced fleet inventory |
| Doha | Qatar | Premium / luxury skew | High share of Land Cruiser, Lexus LX, G-Class |
| Kuwait City | Kuwait | Premium + American spec | KWD-denominated; smaller volume, higher average price |
| Manama | Bahrain | Mid-tier used | BHD-denominated, regional cross-shopping with Saudi East |
| Muscat | Oman | Used + Toyota-heavy | OMR-denominated; lower listing volume than UAE/Saudi |
| Cairo | Egypt | Mass-market used | EGP-denominated, much lower price points; manual transmission share notable |
| Alexandria | Egypt | Mass-market used | Coastal Egypt secondary market |
Cost & Performance
| Metric | Value |
|---|---|
| Engine | got-scraping (HTTP) with RSC header probe + Cheerio HTML fallback — no headless browser |
| Runtime — 100 used listings, 1 country | ~30–60 seconds |
| Runtime — 1,000 used listings, 1 country | ~3–6 minutes |
| Runtime — All-GCC sweep, single make | ~10–20 minutes depending on requestDelay |
Runtime — Detail-page enrichment (scrapeDetails: true) | ~3–5× the listing-only runtime |
| Pricing model | Pay-per-event (per actor start + per dataset item) |
| Data freshness | Live at run time — re-run on any cron you want |
| Auth required | None |
| Proxy required | Recommended (Apify proxy on by default) |
| Concurrency | Safe to run multiple parallel {country, make} configs |
| Memory footprint | 256 MB sufficient for most runs; 1024 MB max |
| Geographic coverage | UAE · Saudi Arabia · Qatar · Kuwait · Bahrain · Oman · Egypt |
Compliance, Privacy & Legal Notes
- Public data only — every field in this dataset is published openly on YallaMotor.com and indexed by Google, Bing and Yandex
- No personal residential data —
cityandcountryreference the listed-car location, not the seller's home address - No PII for individual sellers beyond what the seller chose to publish — phone numbers (when
scrapeDetails: trueis enabled) are the contact numbers the seller voluntarily attached to the listing - No payment, financial or banking data — YallaMotor does not publish such data and the actor does not synthesize any
- Respect platform ToS — use a reasonable
requestDelay(≥ 500 ms), avoid hammering single subdomains, and honor any takedown requests forwarded by YallaMotor - Compliance with PDPL (Saudi Arabia), UAE PDPL, Egypt PDPL, GDPR, CCPA, CAN-SPAM, TCPA is the responsibility of the data consumer — particularly when contacting individual sellers
- Robots & rate limiting — the actor's defaults are designed for polite, sustainable scraping; do not override
requestDelaybelow 200 ms
Important: This actor is a research and analytics tool. Do not use the data to harass sellers, generate auto-dial spam campaigns or impersonate dealers. Aggregate analytics, B2B competitive intel and dealer benchmarking are the intended use.
Frequently Asked Questions
How fresh is the data?
Live at the moment the run executes. YallaMotor doesn't publish a daily dump — every listing on the site is whatever is live when the actor hits it. Schedule the actor every hour, every day, or every week depending on how fast your downstream use case needs price-change detection.
How many records will I get?
Depends on countries, makes and models you select. A single-country toyota used-car sweep in the UAE typically yields several thousand listings. An all-GCC, all-makes used scrape can run into the tens of thousands. Use maxRecords to bound scope.
Does this scraper require a YallaMotor account or API key?
No. YallaMotor publishes its listings publicly. You only need an Apify account to run the actor.
Does it work for new cars and used cars?
Yes — both. Set listingType: "used", "new" or "all". New-car records always have mileage: null and use OEM-published list prices.
Which countries are supported?
UAE (uae), Saudi Arabia (sa), Qatar (qa), Kuwait (kw), Bahrain (bh), Oman (om) and Egypt (eg). UAE is the default if you leave countries empty.
What currencies are returned?
AED, SAR, QAR, KWD, BHD, OMR and EGP — automatically mapped from the country subdomain. Convert to USD/EUR downstream with any FX provider.
Are dealer phone numbers included?
Only when scrapeDetails: true. That toggle adds a per-listing detail-page fetch which pulls the tel: link, full dealer name and the complete image array. Expect 3–5× the runtime.
What about Arabic-language listings?
The titles and city names are returned in the form they appear on the page — usually English on YallaMotor's English-default URLs. If you scrape Arabic-language paths the fields will reflect that. The actor's regex city dictionaries currently target English city names.
Does it handle CAPTCHAs or Cloudflare?
The actor uses got-scraping (which fingerprints like a real browser) plus rotating Apify proxy sessions, retries on 403/429/5xx, and a final non-proxy fallback. For very large scrapes (tens of thousands of records) residential proxies improve reliability — switch your proxyConfiguration to a residential group.
Can I filter by city?
Not directly via input — but you can paste a city-filtered URL as startUrls, or filter downstream on the city field. Example city-filtered URL: https://uae.yallamotor.com/used-cars/dubai/toyota.
Can I filter by price range or mileage?
Not in the actor input — filter on price / mileage in your downstream SQL, Sheets or Python step. The actor returns those fields as typed numbers.
What's the difference between Dealer, Certified and Individual seller types?
Dealer = franchised or independent showroom. Certified = manufacturer/dealer certified pre-owned program. Individual = private classified-style listing. The field is regex-detected from card copy and may be null when the page doesn't expose it.
Does the actor deduplicate?
Yes. Listings are deduped by listingId, then url, then title within a run — so RSC + JSON-LD + HTML strategies surfacing the same car only emit one record. Cross-run dedup is your downstream pipeline's job.
What about Oman?
Oman (om.yallamotor.com) is supported via Start URLs; the country dictionary uses OMR and Muscat as the default city. Listing volume is meaningfully smaller than UAE / Saudi.
Can I run this on the Apify free plan?
Yes — small scrapes fit comfortably in the free monthly compute allowance. Start with maxRecords: 50 to sample before committing to a larger run.
Can I schedule it?
Yes — Apify's built-in Scheduler runs the actor on any cron (hourly, daily, weekly). Combine with the Google Sheets, webhook, S3 or database integrations for fully automated pipelines.
What if the run returns zero listings?
Most common causes: aggressive 429 from too-low requestDelay (raise to 1000–1500 ms), a make slug that doesn't exist on YallaMotor (check spelling — mercedes-benz, not mercedes), or a country with no inventory for that make. The actor logs the page title, JSON-LD count and a sample card snippet for the first page of each task to help diagnose.
What export formats are supported?
JSON, CSV, Excel (XLSX), HTML, XML, RSS and JSON Lines — directly from the Apify dataset view or REST API.
Does it scrape detail pages by default?
No — scrapeDetails defaults to false for speed and cost. Turn it on when you need dealer phone numbers and the full image set.
How is this different from a paid auto-data API?
Paid APIs (e.g. KBB-style residual feeds) bundle proprietary valuation models with the data and charge monthly subscriptions in the hundreds-to-thousands of USD per market. This actor returns the raw listing data YallaMotor publishes publicly, lets you build whatever valuation model you want, and bills per-event with no monthly minimum.
Related Apify Actors by Haketa
If you're building MENA / international classifieds and marketplace pipelines, these sibling actors slot in naturally:
- Mourjan Scraper (MENA) — Pan-MENA classifieds — cars, real estate, jobs across UAE, Saudi, Kuwait, Qatar, Bahrain, Oman, Jordan, Lebanon
- Kleinanzeigen.de Scraper (Germany) — Germany's largest classifieds incl. auto /
Auto, Rad & Bootcategory - Marktplaats.nl Scraper (Netherlands) — Dutch classifieds incl. used cars
- OfferUp Scraper (US) — US local classifieds incl. vehicles
- Kijiji.ca Scraper (Canada) — Canadian classifieds incl. auto category
- Lelong.my Scraper (Malaysia) — Malaysia's veteran online marketplace (electronics, fashion, auto parts)
- TradeMe Scraper (New Zealand) — NZ's largest marketplace incl. Motors
- Chotot.com Scraper (Vietnam) — Vietnamese classifieds incl. vehicles
- SEEK Scraper (Australia/NZ) — Adjacent: automotive industry jobs / dealer hiring intel
- Domain.com.au Property Scraper — Adjacent regional data; useful for combined relocation analytics
Comparison vs. Alternatives
| Approach | Setup time | Multi-country | Currency normalization | Cost (10K records) | Anti-bot handled | Schema |
|---|---|---|---|---|---|---|
| This actor | < 1 minute | Yes — 7 markets | Yes — auto per subdomain | Low (pay-per-event) | Yes — proxy + retries | Flat, typed JSON |
| Manual browsing + copy/paste | Hours per market | No | No | Free + labor | N/A | Spreadsheet by hand |
| Custom Python + BeautifulSoup | Days–weeks | DIY | DIY | Free + infra + maintenance | DIY (and breaks often) | DIY |
| Headless browser (Puppeteer / Playwright) | Days | DIY | DIY | High (CU-heavy) | Partially | DIY |
| Paid auto-data API (KBB-style) | Hours of contracting | Limited | Yes | $$$$ subscription | Yes | Proprietary fields |
| Direct YallaMotor partnership | Months | Yes | Yes | Negotiated | Yes | Custom |
Why Pay-Per-Event Pricing?
- You only pay when the actor runs — no monthly subscription
- Charges scale with how many listings you actually pull, not a flat capacity tier
- Transparent line-item billing visible inside Apify
- No minimum commitment — sample with
maxRecords: 50for pennies - Predictable per-listing economics — easy to forecast for budgeting
- Free to evaluate on the Apify free plan before committing to scheduled runs
Changelog
| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-05 | Initial public release — RSC + JSON-LD + HTML fallback pipeline; 7-country GCC + Egypt coverage; multi-currency normalization; optional detail-page enrichment; pay-per-event pricing |
Keywords
YallaMotor scraper · YallaMotor.com scraper · YallaMotor data extraction · GCC car data · GCC automotive marketplace data · GCC used cars data · GCC new cars data · UAE used cars data · UAE car listings scraper · Dubai car prices · Dubai used car scraper · Abu Dhabi car listings · Sharjah used cars · Saudi car listings scraper · Saudi Arabia used cars data · Riyadh car prices · Jeddah used car scraper · Dammam car listings · Qatar car listings scraper · Doha used cars data · Kuwait car listings · Kuwait City used cars · Bahrain car listings · Manama used cars · Oman car listings · Muscat used cars · Egypt used cars data · Cairo car listings · YallaMotor new car prices · GCC car price comparison · Middle East car marketplace data · MENA automotive data · Toyota Nissan BMW UAE prices data · Toyota Land Cruiser price UAE · Nissan Patrol price Saudi · Lexus LX 570 Qatar price · Mercedes G-Class Dubai · Range Rover GCC prices · used car arbitrage Middle East · car dealer competitive intelligence GCC · car finance pricing GCC · fleet manager research UAE · automotive residual value modeling GCC · car export research Middle East · Apify automotive actor · car listing scraper API · used car data extraction · new car data extraction · GCC car dealer database · YallaMotor scraper API · pay per event car scraper
Support
- Bug reports: Use the Issues tab on the Apify Store page
- Feature requests: Same place — describe your country / make / model gap and we'll prioritize
- Direct contact: Through the Apify developer profile
If this actor saves your team time, a 5-star rating on the Apify Store helps other automotive, finance and trade-research teams discover it. Thank you!