API docs
Authentication
Header X-API-Token on every pricing endpoint. /api/catalog needs no key.
GET/api/price-eval
| car-info * | Free text, Arabic or English. |
|---|
curl -H 'X-API-Token: cp_live_…' \ 'https://pricing.syarahservices.com/api/price-eval?car-info=2021%20Toyota%20Camry%20GLE%2085000%20km'
GET/api/price-eval/by-modelno parse call
| make * | English name from /api/catalog. 422 if not in the catalog. |
|---|---|
| model * | English name from /api/catalog?make=… |
| extension | Trim, e.g. GLE. 618 of 2049 models have any. |
| year * | Four digits, within the supported range. |
| mileage | Kilometres. Omitted → age-expected mileage, no adjustment. |
curl -H 'X-API-Token: cp_live_…' \ 'https://pricing.syarahservices.com/api/price-eval/by-model?make=Toyota&model=Camry&extension=GLE&year=2021&mileage=85000'
GET/api/catalog
| /api/catalog | { makes: [{ value, label }] } |
|---|---|
| ?make=Toyota | { models: [...] } |
| ?make=Toyota&model=Camry | { extensions: [...] } |
Response
{
"status": "ok",
"fair_market_value_sar": 79400,
"price_range_sar": { "low": 75400, "high": 83400 },
"confidence": "Medium",
"market_verified": true,
"vehicle": { "make": "Toyota", "model": "Camry", "extension": "GLE", "year": 2021, "mileage_km": 85000 },
"assumptions": { "mileage_assumed": false },
"breakdown": {
"original_ksa_msrp_sar": 115000, "applied_retention": 0.69, "retention_clamped": false,
"mileage_class": "Normal", "mileage_ratio": 0.85,
"market_median_sar": 78500, "market_p25": 76000, "market_p75": 81000, "market_weight": 0.41,
"comparable_count": 2, "comparable_tier": 2,
"comparable_source_counts": { "haraj_local": 0, "opensooq": 2 }
}
}comparable_source_counts is the raw per-source yield — a dead scraper reads 0 rather than disappearing.
Status codes
| HTTP | status |
|---|---|
| 200 | ok |
| 400 | MISSING_INPUT · UNPARSEABLE_INPUT · INVALID_YEAR · INVALID_MILEAGE |
| 401 | unauthorized |
| 422 | UNKNOWN_VEHICLE · YEAR_REQUIRED · YEAR_OUT_OF_RANGE · INSUFFICIENT_DATA |
| 429 | rate_limited — per-key cap or the global spend cap |
| 502 | GEMINI_CALL_FAILED |
| 503 | PROVIDER_UNCONFIGURED |