Listings
Send your listings to an index: one at a time, in batches or as a file.
Write listings
Authorization: Bearer <key>.| Route | Body | Does |
|---|---|---|
PUT /api/v1/indexes/{index}/listings/{id} | One listing | Creates or replaces it |
DELETE /api/v1/indexes/{index}/listings/{id} | — | Unpublishes it |
POST /api/v1/indexes/{index}/listings | { "upsert": [...], "remove": [...] } | A batch of up to 1,000 |
GET /api/v1/indexes/{index}/listings/{id} | — | The stored record and its issues |
curl -X PUT https://nabdaq.dev/api/v1/indexes/main-listings/listings/MH-1042 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"purpose": "For Sale",
"property_type": "Apartment",
"bedrooms": 2,
"price": "AED 1.95M",
"location": [
"Dubai",
"Dubai Marina"
],
"lat": 25.0791,
"lng": 55.1402,
"title": "Sea view 2 bed in Marina",
"url": "https://www.agency.ae/listings/mh-1042",
"image": "https://www.agency.ae/img/mh-1042.jpg",
"balcony": "yes",
"revision": 1727340000
}'What a listing contains
Flat JSON: an id and the filter fields by key, loosely typed. Values can be labels or aliases in English or Arabic ("Flat", "شقة"), amounts as people write them ("AED 1.2M", "١٥٠ ألف"), yes/no as words. Alongside: location, lat/lng, title, title_ar, building, project, reference, url, image, featured, listed_at, updated_at, status and revision.
status: "sold", "rented" or "unpublished" removes a listing.Order and retries
Send revision (a number or your last-modified time): older updates are refused, so a late delivery never overwrites newer data or brings back a removed listing. Idempotency-Key makes a retried request apply once.
Imports
POST /api/v1/indexes/{index}/imports with CSV (text/csv) or JSON. Add ?dry_run=true to preview what would change; the same body without it applies. mode=full (default) treats the file as your whole inventory and unpublishes what is missing, asking for confirm=<import_hash> above 20%; mode=merge only adds and updates. Columns are mapped from common CRM headers; mapping overrides them.
Plan limits
Updates and removals always apply. New listings beyond the plan's limit (plus 10% on paid plans) are held and reported in held, never dropped silently.