Haraj (حراج) Scraper - Saudi Classifieds Listings + Prices
Pricing
$1.25 / 1,000 listings
Haraj (حراج) Scraper - Saudi Classifieds Listings + Prices
Search haraj.com.sa, Saudi Arabia's largest classifieds site, and get public listings: title, price in SAR, city, category, photos, publish time and URL. No login, no cookies. Rows are deduplicated; empty and partial search terms are reported separately and never charged.
Pricing
$1.25 / 1,000 listings
Rating
0.0
(0)
Developer
Lantern Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
Haraj (حراج) Scraper — Saudi Classifieds Listings + Prices
A Lantern Lab Actor. Give it search terms, optionally one city and one category, and get haraj.com.sa's public classifieds back: title, price in SAR, city and district, category, photos, publish time and the listing URL — for cars, real estate, jobs, electronics and everything else Saudi Arabia's largest classifieds site carries. Search in Arabic: the site is Arabic-first, and كورفيت returns far more than "Corvette". No Haraj login, no cookies, no account of your own.
Price: USD 1.99 per 1,000 listing rows. No run-start fee. Search terms that return nothing, per-term status rows and the run summary are free — you pay for listings, not for searches.
What you get
- The newest listings per search term. Every term is searched separately, in the order you gave it, and every row is labelled with the term that found it and where it ranked.
- Deduplicated across the whole run.
listingIdis Haraj's own listing identifier, so an ad that matches several of your terms is written once and charged once — the term's status row says how many were skipped as duplicates. - City and district, not just a region. Haraj's
cityis the region (الرياض, جده…);geoCityandgeoNeighborhoodcarry the town and the district when the ad states them. - Prices, honestly.
priceis the numeric asking price in SAR,formattedPriceexactly as the site prints it. Many ads state no price at all — those rows carryprice: null, never a guess. - Nothing charged for an empty search. A term Haraj answers with no listings is an empty result, and its status row says so in plain words. A term cut short by your
maxListings, by the request ceiling, or by a refusal from Haraj ispartial: truewith the reason — partial is never reported as empty. - Seller privacy by design. Haraj exposes the seller's username on every ad, but a classifieds seller is usually a private person, so this Actor does not collect it. No personal names, phone numbers or e-mail addresses anywhere in the output.
- It caps itself.
maxUpstreamRequestsis a hard ceiling on the requests a run sends to Haraj, worked out from your input when you leave it empty, so a run is never unbounded.
What it does not do
- One page per search term — that is everything Haraj's public search gives. Each search page carries the newest ~19 listings and Haraj's public site offers no URL that turns the page, so a term cannot return more than that. The status row says
pageLimitReachedwhen the site's page size, not your limit, ended the list. sellerTypeis Haraj's own label — the site labels every listing "AD" and does not tell a dealer from a private seller.- No listing detail pages, no comment threads, no seller profiles, no phone-number reveal, no image downloads.
- No scheduling or monitoring built in; use Apify schedules.
Input
| Field | Default | Meaning |
|---|---|---|
searchQueries | required | One search term per line, Arabic preferred. Every term is searched separately. |
city | — | Restrict every search to one city or region, exactly as Haraj writes it: الرياض, جده, الشرقيه… Empty searches all of Saudi Arabia. |
category | — | Keep only listings in one Haraj category, exactly as the site writes it (e.g. حراج السيارات). Listings outside it are dropped and counted, not silently lost. |
maxListings | 100 | Upper bound on listing rows for the whole run. |
maxUpstreamRequests | derived | Hard ceiling on HTTP requests to Haraj for the whole run. |
proxyConfiguration | Apify Proxy | Datacenter by default, which is what this Actor is measured on; Haraj serves its public search pages over it without a bot check. |
{"searchQueries": ["كورفيت", "ايفون 16"],"city": "الرياض","category": "حراج السيارات","maxListings": 100}
Output
One row per listing, recordType: "listing":
{"recordType": "listing","listingId": 123456789,"title": "كورفيت 2023 نظيفه جدا","price": 285000,"currency": "SAR","formattedPrice": "285,000 ريال","city": "الرياض","geoCity": "الرياض","geoNeighborhood": "النرجس","category": "حراج السيارات","tags": ["حراج السيارات"],"publishedAt": "2026-10-23T14:12:00.000Z","imageUrls": ["https://......mp4pic.com/..."],"imageCount": 6,"hasImage": true,"hasVideo": false,"url": "https://haraj.com.sa/123456789/","sellerType": "AD","isPromoted": false,"commentCount": 4,"carInfo": { "make": "شفروليه", "year": "2023" },"query": "كورفيت","cityFilter": "الرياض","categoryFilter": "حراج السيارات","rank": 1,"partial": false,"partialReason": null,"collectedAt": "2026-10-24T03:00:00.000Z"}
Each search term also gets one free query_status row (how many listings it returned, how many were duplicates, whether it was partial and why), and the last row is a RUN_SUMMARY of the whole run — both uncharged.
Limits
- Search terms are capped at 100 per run,
maxListingsat 10,000,maxUpstreamRequestsat 200. - The site serves every page in Arabic; titles and categories come through in Arabic exactly as the site prints them.
- This Actor only collects what Haraj shows a logged-out visitor: the public search pages. If Haraj changes how those pages are built, runs report
upstream_errororblockedper term instead of guessing.