DarakPlatform
Use casesDocsGuidesPricing
DocsGuides
Guides

Start here

  • Quickstart
  • Authentication

AI & MCP

  • Connect an AI assistant
  • Build with Darak and AI

About the data

  • What a listing is
  • Coverage and freshness

Building with it

  • Searching and filtering
  • Webhooks
  • Keeping a copy in sync

Operating

  • Limits and quotas
  • Pagination
  • Retrying safely
  • Errors
  • Versioning

Policies

  • Terms in practice

API reference →

Coverage and freshness

Live counts by source and city, and a downloadable sample, are on the coverage page. This page is about how the numbers are produced, which matters more than the numbers when you're deciding what to build on.

How often it updates. Darak reads public listings from each source twice a day. last_seen_at is when a listing was last confirmed live; updated_at is the source's own update time where it publishes one, and last_seen_at where it doesn't.

One listing per property. The same property is often advertised on several sites at once. Darak groups those ads by photo similarity — perceptual hashes — together with location, price, size and bedroom count, keeps one as primary and lists the rest in also_listed_on. Search, counts and market statistics only ever count the primary, which is why a Darak count is lower, and more honest, than the sum of the sources.

Quality filtering. Search, counts and market statistics leave out listings whose price or size is implausible for their city, listing type and property type. Price fences are set per tier — bedroom count for homes, area band for commercial — from the median and MAD of log price, which resists the mislabelled listings (a monthly rent stored as yearly, say) that would drag a percentile with them. Bedroom and area caps and a floor at 30% of the neighborhood median do the rest. Detail and batch lookups skip that filter, so GET /listings/{id} can return a listing search will not. Bounds are looser in smaller cities, where there is less to calibrate against.

Photos are a condition of being served. A listing becomes available once Darak has copied its photos to its own CDN, so a newly scraped listing appears a little later than it appeared at the source, and one that never gets photos never appears at all. Land is exempt, because land is routinely advertised without any.

Neighborhoods. Assigned from the listing's coordinates together with the source's own neighborhood name. Some sources round or offset coordinates for privacy, so a listing can sit slightly outside its real neighborhood; neighborhood_id is the stable thing to filter on, not lat/lng.

Market statistics are computed over live listings updated in the last 30 days, after quality filtering. Every response carries its sample_size, and medians are withheld rather than published on a sample too small to mean anything.

History goes back to March 2026, which bounds price-history and the trend endpoints.

What this data is not. These are asking prices, not transaction prices — what sellers and landlords want, not what anyone paid. Coverage is deepest in Riyadh, Jeddah and the Eastern Province and thinner in smaller cities. Sources can change what they publish, or disappear.