YallaMotor Scraper | GCC Used & New Cars Marketplace avatar

YallaMotor Scraper | GCC Used & New Cars Marketplace

Pricing

from $1.50 / 1,000 results

Go to Apify Store
YallaMotor Scraper | GCC Used & New Cars Marketplace

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

3

Monthly active users

12 days ago

Last modified

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.

Apify Actor


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 000 need regex per market
  • Pagination via ?page=N query strings with no API to discover total page counts
  • Lazy-loaded card images served from b8cdn and yallamotor CDNs with srcset attributes
  • City detection drifts between Arabic and English (Dubai/دبي, Jeddah/جدة, Doha/الدوحة)
  • JSON-LD Schema.org/Car blocks 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

  1. Open the actor page on the Apify Store
  2. Click Try for free
  3. Pick your Countries (e.g. uae, sa) and Makes (e.g. toyota, nissan) — or paste Start URLs directly
  4. Hit Start — your dataset appears under Storage → Datasets in JSON, CSV or Excel

API Run (Python)

from apify_client import ApifyClient
client = 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.

LayerURL patternEngineNotes
Used cars (per country)https://{cc}.yallamotor.com/used-cars/{make}/{model}?page=Ngot-scraping + RSC headersTries Next.js RSC payload first for structured JSON
New cars (global)https://www.yallamotor.com/new-cars/{make}/{model}got-scraping + CheerioManufacturer pricing & spec pages
Detail pages/used-cars/{make}/{model}/{year}/used-{slug}-{listingId}got-scraping + CheerioOptional — adds phone, dealer name, full image set

Engineering details

  • RSC endpoint discovery — sends RSC: 1, Next-Router-State-Tree and Next-Url headers to coax YallaMotor's Next.js server into returning the streaming JSON payload, then walks the tree looking for objects that contain a make/brand plus price/year
  • JSON-LD structured data parser — extracts Schema.org/Car, Vehicle, Product, Offer, IndividualProduct and AutoDealer blocks; 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, BHD with 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, Cairo and 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, then url, then title — so RSC + JSON-LD + HTML strategies that surface the same car only get pushed once
  • Detail page enrichment (optional) — toggling scrapeDetails: true visits each listing for tel: phone numbers, dealer name and the full CDN image array (b8cdn / yallamotor hosts)
  • 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

ParameterTypeDefaultDescription
startUrlsarray<string>[]Direct YallaMotor URLs. Overrides countries/makes/models when provided. Use this when you already have search or filter URLs from the browser.
countriesarray<string>["uae"]Country subdomains: uae, sa (Saudi Arabia), eg (Egypt), kw (Kuwait), qa (Qatar), bh (Bahrain). One run per combination.
listingTypeenumusedused = used cars only, new = new cars only, all = both.
makesarray<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.
modelsarray<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.
scrapeDetailsbooleanfalseVisit each listing page for full specs, the full image array, dealer name and phone (when published). Slower (~3-5× runtime) but richer.
maxRecordsinteger0Hard cap on total listings across all tasks. 0 = unlimited.
maxPagesinteger0Hard cap on pages per {country, type, make, model} combination. 0 = paginate until no more results.
requestDelayinteger800Milliseconds between requests. 500–1500 recommended. Lower values risk 429s on hot makes.
proxyConfigurationobject{ 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.

FieldTypeDescription
listingIdstring | nullStable YallaMotor numeric listing ID (extracted from URL trailing -\d{5,}). Persists across runs.
listingTypestringused or new.
titlestring | nullFull listing headline as published — e.g. Used Toyota Land Cruiser 2022 GR Sport Dubai.
makestring | nullManufacturer — Toyota, Nissan, BMW, Mercedes-Benz, Lexus.
modelstring | nullModel — Land Cruiser, Patrol, 3 Series, G-Class.
yearinteger | nullModel year (4-digit).
trimstring | nullTrim or variant — GR Sport, Titanium, xDrive40i.
pricenumber | nullAsking price in currency units. Placeholder prices (≤ 1) are dropped.
currencystring | nullISO currency code — AED, SAR, QAR, KWD, BHD, OMR, EGP.
mileagenumber | nullOdometer reading in kilometers. Always null for new cars.
citystring | nullCity as published — Dubai, Abu Dhabi, Sharjah, Riyadh, Jeddah, Doha, Kuwait City, Manama, Muscat, Cairo.
countrystring | nullCanonical country name — UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, Oman, Egypt.
colorstring | nullExterior color when published.
transmissionstring | nullAutomatic, Manual, CVT.
fuelTypestring | nullPetrol, Diesel, Hybrid, Electric.
bodyTypestring | nullSedan, SUV, Hatchback, Coupe, Pickup, Van, Convertible.
sellerTypestring | nullDealer, Individual, Certified.
sellerNamestring | nullDealer / showroom name when published (e.g. Al-Futtaim Toyota, Mohamed Yousuf Naghi Motors).
phonestring | nullSeller phone (E.164-ish or local) — populated only when scrapeDetails: true.
imagesarray<string> | nullCDN URLs for listing photos (YallaMotor / b8cdn). Full array when scrapeDetails: true.
urlstring | nullCanonical listing URL (no UTM params).
scrapedAtstringISO-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

CountrySubdomainCurrencyMajor listing cities
United Arab Emiratesuae.yallamotor.comAEDDubai, Abu Dhabi, Sharjah, Ajman, Ras al Khaimah, Fujairah, Umm al Quwain
Saudi Arabiasa.yallamotor.comSARRiyadh, Jeddah, Dammam, Khobar, Mecca, Medina, Taif
Qatarqa.yallamotor.comQARDoha, Al Rayyan, Al Wakrah, Lusail
Kuwaitkw.yallamotor.comKWDKuwait City, Hawalli, Salmiya, Farwaniya
Bahrainbh.yallamotor.comBHDManama, Muharraq, Riffa
Omanom.yallamotor.comOMRMuscat, Salalah, Sohar
Egypteg.yallamotor.comEGPCairo, 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

ValueReturned fromMileage present?
used/used-cars/... paths on each country subdomainUsually yes
new/new-cars/... paths (global + per country)Always null

Seller type (when published)

ValueMeaning
DealerFranchised dealer or independent showroom
CertifiedManufacturer or dealer-network certified pre-owned
IndividualPrivate 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 × country using 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 Sedan body 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: Electric over 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 (when scrapeDetails: 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)

  1. Schedule this actor daily at 06:00 UTC (10:00 Dubai)
  2. Add the Export to Google Sheets integration on the run
  3. 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 (listingId in yesterday's run, missing today → likely sold)
  • New dealer entrants — first time a sellerName appears 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 × country heatmap
  • 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

MetroCountryListing focusNotes
DubaiUAEUsed + new, all segmentsLargest single market on YallaMotor; deep German exec & SUV inventory
Abu DhabiUAENew + government fleet trade-insStrong Japanese SUV demand
SharjahUAEExport-grade used, mid-tierCheaper average prices; Al Awir / Sharjah used-car hubs
AjmanUAEBudget usedLowest average prices in the UAE
RiyadhSaudi ArabiaMixed new + usedSaudi's largest car market by listings
JeddahSaudi ArabiaUsed + import-specCoastal trade hub; strong used Japanese supply
Dammam / KhobarSaudi ArabiaEastern province new + usedAramco-influenced fleet inventory
DohaQatarPremium / luxury skewHigh share of Land Cruiser, Lexus LX, G-Class
Kuwait CityKuwaitPremium + American specKWD-denominated; smaller volume, higher average price
ManamaBahrainMid-tier usedBHD-denominated, regional cross-shopping with Saudi East
MuscatOmanUsed + Toyota-heavyOMR-denominated; lower listing volume than UAE/Saudi
CairoEgyptMass-market usedEGP-denominated, much lower price points; manual transmission share notable
AlexandriaEgyptMass-market usedCoastal Egypt secondary market

Cost & Performance

MetricValue
Enginegot-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 modelPay-per-event (per actor start + per dataset item)
Data freshnessLive at run time — re-run on any cron you want
Auth requiredNone
Proxy requiredRecommended (Apify proxy on by default)
ConcurrencySafe to run multiple parallel {country, make} configs
Memory footprint256 MB sufficient for most runs; 1024 MB max
Geographic coverageUAE · Saudi Arabia · Qatar · Kuwait · Bahrain · Oman · Egypt

  • Public data only — every field in this dataset is published openly on YallaMotor.com and indexed by Google, Bing and Yandex
  • No personal residential datacity and country reference 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: true is 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 requestDelay below 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.


If you're building MENA / international classifieds and marketplace pipelines, these sibling actors slot in naturally:


Comparison vs. Alternatives

ApproachSetup timeMulti-countryCurrency normalizationCost (10K records)Anti-bot handledSchema
This actor< 1 minuteYes — 7 marketsYes — auto per subdomainLow (pay-per-event)Yes — proxy + retriesFlat, typed JSON
Manual browsing + copy/pasteHours per marketNoNoFree + laborN/ASpreadsheet by hand
Custom Python + BeautifulSoupDays–weeksDIYDIYFree + infra + maintenanceDIY (and breaks often)DIY
Headless browser (Puppeteer / Playwright)DaysDIYDIYHigh (CU-heavy)PartiallyDIY
Paid auto-data API (KBB-style)Hours of contractingLimitedYes$$$$ subscriptionYesProprietary fields
Direct YallaMotor partnershipMonthsYesYesNegotiatedYesCustom

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: 50 for pennies
  • Predictable per-listing economics — easy to forecast for budgeting
  • Free to evaluate on the Apify free plan before committing to scheduled runs

Changelog

VersionDateNotes
1.0.02026-05Initial 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!