Syarah API

Get Saudi car listings, SAR prices and full specs from Syarah with one API

The Syarah API returns syarah.com, Saudi Arabia's online car marketplace, as clean JSON in eight actions.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Syarah endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
S
/syarah/v1

8 active endpoints, on 1 and 2 credit tiers.

  • POST/syarah/v1/search
  • POST/syarah/v1/detail
  • POST/syarah/v1/count
  • POST/syarah/v1/makes
  • POST/syarah/v1/models
  • POST/syarah/v1/filters
  • POST/syarah/v1/suggest
  • +1 more

What Syarah endpoints does ReefAPI ship?

8 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

8 endpoints

search

2 cr

Search Syarah's Saudi car stock by free text (English or Arabic), make, model, trim, conditio…

required
—
optional
text, make_id, model_id, trim_id, condition, seller_type, fuel, transmission, drivetrain, body_shape, origin, category, make_country, payment, exterior_color_id, interior_color_id, cylinders, seats, cabins, engine_size, feature_ids, deal_id, booked, year_min, year_max, price_min, price_max, km_min, km_max, installment_min, installment_max, sort, page, page_size, max_results, lang

detail

1 cr

The full record for one listing.

required
id
optional
lang

count

1 cr

How many cars match a filter combination, from Syarah's own count.

required
—
optional
text, make_id, model_id, trim_id, condition, seller_type, fuel, transmission, drivetrain, body_shape, origin, category, make_country, payment, exterior_color_id, interior_color_id, cylinders, seats, cabins, engine_size, feature_ids, deal_id, booked, year_min, year_max, price_min, price_max, km_min, km_max, installment_min, installment_max, lang

makes

2 cr

Every car make Syarah currently lists, with the numeric make_id that search, count and models…

required
—
optional
text, make_id, model_id, trim_id, condition, seller_type, fuel, transmission, drivetrain, body_shape, origin, category, make_country, payment, exterior_color_id, interior_color_id, cylinders, seats, cabins, engine_size, feature_ids, deal_id, booked, year_min, year_max, price_min, price_max, km_min, km_max, installment_min, installment_max, lang

models

2 cr

Every model Syarah lists, with the numeric model_id that search takes and the parent make_id…

required
—
optional
text, make_id, model_id, trim_id, condition, seller_type, fuel, transmission, drivetrain, body_shape, origin, category, make_country, payment, exterior_color_id, interior_color_id, cylinders, seats, cabins, engine_size, feature_ids, deal_id, booked, year_min, year_max, price_min, price_max, km_min, km_max, installment_min, installment_max, lang

filters

2 cr

The complete, live filter vocabulary Syarah publishes.

required
—
optional
text, make_id, model_id, trim_id, condition, seller_type, fuel, transmission, drivetrain, body_shape, origin, category, make_country, payment, exterior_color_id, interior_color_id, cylinders, seats, cabins, engine_size, feature_ids, deal_id, booked, year_min, year_max, price_min, price_max, km_min, km_max, installment_min, installment_max, lang

suggest

1 cr

Syarah's own type-ahead for a partial query, in English or Arabic.

required
q
optional
—

batch

2 cr

Up to 100 listings' search-shaped rows in ONE request.

required
ids
optional
—

Every parameter, every allowed value →

Syarah API

8 of 8 endpoints, ready to run

View docs ↗

Filter Syarah's Saudi stock in Arabic or English and get up to 100 rows a page with the asking price in SAR, the discount, mileage, model year, trim, city, seller kind and the warranty badge. There is no paging ceiling here - the response reports the full total and the reachable total, and they are the same number.

2 credits0 required · 18 optional
POST/syarah/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the Syarah API works

Syarah is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 438 engines.

02
Call
POST /syarah/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Track new Saudi listings and price cuts on a watchlist, with real dates instead of bumped ads

The thing that breaks change-tracking on car marketplaces is a newest order that is really a bump order. Syarah does not have that problem, which makes a genuine daily diff possible in four calls.

01makes, then models with the make_id
POSTmakes, then models with the make_id

Get the numeric ids once. Toyota is 4; its Yaris is 718 and holds 109 cars.

02count with your filters
POSTcount with your filters

Size the segment first. A used-Toyota query reports 573 cars across 24 pages, and reachable_results says all 573 are walkable.

03search with sort newest, max_results 100
POSTsearch with sort newest, max_results 100

The top of this list really is the newest stock: on a measured run every row on page one had been listed the previous day.

04detail on the new ids
POSTdetail on the new ids

Adds listed_at and days_on_lot - the actual date the car went live - plus the spec card, the equipment list and the full gallery.

05batch with up to 100 ids you already know
POSTbatch with up to 100 ids you already know

One request returns their current price, discount and reserved flag. Ids that have disappeared come back in missing_ids, which is your sold signal.

A daily feed of genuinely new Saudi listings with dated rows, plus a price-and-availability diff over your whole watchlist for one request per hundred cars.

request
curl -X POST https://api.reefapi.com/syarah/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"make_id":4,"condition":"used","sort":"newest","max_results":24}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "syarah",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

What is on Syarah right now - and how much of each slice an API call can reach

Measured on 2026-10-06 with the count action, each row against an unfiltered control of 3,674 cars taken in the same run. The right-hand column is the one worth reading: unlike most classifieds sites, Syarah serves its whole result set, so a slice of 1,905 cars really is 1,905 rows of paging.

SliceCars listedReachable in one query
Everything, unfiltered3,674all 3,674
Dealer stock1,905all 1,905
Syarah's own inspected stock1,769all 1,769
Year 2025-20261,304all 1,304
Under 20,000 km1,128all 1,128
Cash-only listings1,218all 1,218
Brand new796all 796
Toyota672all 672
Under 40,000 SAR638all 638
Seven-seaters496all 496
Already reserved506all 506
GCC spec213all 213
Manual gearbox136all 136
Pickups109all 109
Hybrid132all 132
Electric11all 11

Checked rather than assumed: a 3,674-car query reports 37 pages of 100, page 37 returns exactly 74 rows, and pages 38 and 999 return an empty list instead of repeating the last page. A full walk of a 109-car query collected 109 unique ids. Every search response still returns total_results and reachable_results so code written against a capped marketplace keeps working unchanged.

What was measured on 2026-10-06

Twelve different live searches, twelve detail pulls and twenty filter counts, all recomputed from the raw responses. The lines that go against us are in here too, because those are the ones that would otherwise surprise you in production.

Market

Saudi Arabia - cars listed in Riyadh, Jeddah, Dammam and Al Qurayyat across the measured sample

Cars listed site-wide

3,674 (796 of them brand new)

Currency

SAR, read back from the source on every call rather than assumed

Languages

Arabic and English, both for the query and for the labels in the answer

Rows per search page

Up to 100 - Syarah refuses more and says so

Reachable per query

All of it. A 3,674-car query is 37 pages of 100 with 74 rows on the last one, and a 109-car query returned 109 unique ids

Core fields filled

278 of 278 rows across 12 searches carried id, URL, title, price, currency, year, make, model, condition, fuel, gearbox, drivetrain, both colours, spec, city, seller kind and warranty

Price integrity

Four independent numbers in the same payload agreed on 10 of 10 listings; the odometer reading agreed on 10 of 10

Detail calls

12 of 12 complete, each with 21-62 equipment items and 14-37 photos, and the id, price and odometer identical to the search row that produced them

Listing date

Returned by detail as listed_at plus days_on_lot, and it is a real first-activation date - a newest-first page held 12 rows all listed the previous day

Filters

20 of 20 bit against an unfiltered control taken in the same run; a one-sided range is ignored by Syarah, so the API fills the open end and says it did

Batch

100 listing ids in one request, measured; missing ids are named rather than dropped

No location filter

Syarah accepts none - city is returned on every row but cannot be pushed into the query

No date on search rows

Syarah publishes none there; use sort=newest for the order and detail for the date

Not published by the source

VIN (the page prints seventeen zeros), service history, previous owners, view counts, seller contact details

What people build with Syarah

The jobs this data is most often used for.

8

endpoints

1/2

credits per call

01

Saudi dealer-pricing and residual-value teams call search per make and model to track asking prices in SAR against mileage and model year, then detail for the full spec card.

02

Car-buying apps and lead-gen sites call detail on a search row to show the equipment list, the financing breakdown and every photo in their own UI.

03

Market-sizing dashboards call count with different filter combinations to measure how much stock exists per brand, body style, fuel and price band in one request each.

04

Price-watch and change-tracking jobs call batch with up to 100 listing ids per request to spot price cuts and sold cars, and sort by newest to pick up genuinely new listings.

What Syarah data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 438 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/syarah/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"make_id":4,"condition":"used","sort":"newest","max_results":24}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/syarah/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "make_id": 4,
  "condition": "used",
  "sort": "newest",
  "max_results": 24
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Syarah.

Get a free key →
Can I search Syarah in Arabic?▾

Yes, and it works on both language surfaces. A search for تويوتا returned the same 672 Toyotas as the English word toyota, and كامري, لاندكروزر and برادو all resolve through the suggest action. You can also set the response language, which switches the make, model, colour, fuel and gearbox labels to Arabic. One honest note: a few trim names come back in Arabic even on the English surface, because that is how Syarah stores them - we return the stored value rather than inventing a translation.

How many results can one search return?▾

All of them. This is the unusual part of Syarah compared with other car marketplaces: there is no paging ceiling. A 3,674-car query reports 37 pages of 100, the last page returns exactly 74 rows so the arithmetic closes, and asking for page 38 or page 999 returns an empty list rather than quietly serving page 37 again. A full walk of a 109-car query handed back 109 unique listing ids. Pages are up to 100 rows; Syarah itself refuses more than that and says so.

Is "newest" the date the car was actually listed?▾

Yes, and it is worth saying because on most classifieds sites it is not. Sorting by newest uses Syarah's own first-activation order: on one measured page, all twelve rows had been listed the previous day, with a lot age of nought or one day, while the site's default order mixed cars that were three to eighty-three days old. The detail call returns that date as listed_at along with days_on_lot. The one limitation: search rows carry no date field - Syarah does not publish one there - so you get the order from search and the date from detail or batch.

What currency are the prices in?▾

SAR, and the API reads it back out of Syarah's own response on every call instead of writing it in. Price integrity was checked against four independent numbers in the same payload - the search row, the listing's own price block, its analytics record and the schema.org data on the page itself - and all four agreed on ten of ten listings sampled across new, used, GCC-spec, hybrid and 200,000-SAR-plus stock. Two separate fields are returned where a car is discounted: discount is the cut, and price_before_discount is the pre-cut price, so you never have to guess which is which.

Can I filter by city?▾

No, and we would rather say so than ship a box that does nothing. Syarah accepts no location parameter: every spelling we tried returned the complete unfiltered catalogue. The city is returned on every row, so you can filter it yourself - across 278 measured rows it was Riyadh 141 times, Al Qurayyat 90, Jeddah 40 and Dammam 7. If you mainly want Riyadh, filtering to Syarah's own inspected stock gets you close, since that inventory sits there. Send a city parameter anyway and the response explains why it cannot work.

Does it tell me who is selling the car?▾

It tells you what kind of seller it is: Syarah itself, a dealer on the platform, or a private owner. Syarah's own inspected inventory was 1,769 of the 3,674 cars and dealer or private stock the other 1,905 - the two add up exactly. Syarah sells centrally rather than putting sellers in touch with buyers, so there is no per-listing phone number or seller profile on the public page, and none is returned.

What does the full detail call give me that search does not?▾

The spec card, the equipment list, the whole gallery and the listing date. Across twelve listings, detail returned twenty-one to sixty-two individual features grouped into safety, comfort, technology and exterior, and fourteen to thirty-seven photos - against a five-image preview on a search row. It also adds cylinders, engine type, gear count, doors, key count, both colour hex codes, the financing breakdown and the warranty, plus listed_at and days_on_lot. Horsepower, fuel-tank size, gear count and door count only appear on part of the stock, so they are returned where Syarah publishes them and left empty where it does not.

Do the price, mileage and year filters actually work?▾

Every filter was measured against an unfiltered control of 3,674 cars in the same run, and all twenty bit: under 40,000 SAR cut it to 638, under 20,000 km to 1,128, model year 2025-2026 to 1,304, electric to 11, pickups to 109. One quirk we handle for you: Syarah silently ignores a range that only has one end, so if you send just a maximum price the API supplies the other end itself and tells you it did. One quirk to know about: an instalment range also drops the 1,218 cars that carry no instalment at all.

How do I watch a list of cars for price changes?▾

Use batch. It takes up to 100 listing ids and returns their current rows in a single request, which was measured working at exactly 100 ids. Ids that Syarah no longer publishes come back in a missing_ids list, so a sold or withdrawn car is visible instead of silently absent from the answer. Compared with calling detail a hundred times it is one request instead of a hundred, and priced accordingly.

What does Syarah not publish?▾

VIN, service history, previous-owner count, view counts and seller contact details are not on the public listing, so they are not in the response - absent rather than guessed. The listing page does print a VIN field, but it is seventeen zeros on every car, so we do not return it at all. Brand-new cars carry no odometer reading, which the API returns as empty rather than as zero - that was true on ninety-three of ninety-three new rows measured. And cylinders and cabin count, which search rows leave empty on every row, are returned by detail instead.

What is the Syarah API?▾

Syarah API is a ReefAPI endpoint group for saudi arabia's online car marketplace: used and new stock from syarah's own inspected inventory, dealers and private sellers, priced in sar, searchable in arabic or english. It returns live JSON through POST requests under /syarah/v1.

Is the Syarah API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. Syarah calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Syarah login or account?▾

No login to Syarah is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Syarah data?▾

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

99 Classifieds & Second-hand APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Syarah, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 437 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-06.