Built for the GCC · ready for the world

Plan delivery routes in minutes, not hours

Auto-order up to 100 stops, collect customer locations over WhatsApp, and send a driver-ready route.

Start Free Trial14 days · no card required

From problem to solution

Dispatch pain, solved in order

  • Fuel and time wasted on unoptimized routes.

    Optimal stop order cuts distance 15–30%.

  • Customer addresses are unknown or imprecise.

    Collect locations over WhatsApp — with SMS fallback.

  • Manual planning is slow and error-prone.

    A driver-ready route in under two minutes.

How it works

Three steps, two minutes

No spreadsheets, no pin-dropping by hand. Phone numbers become locations, locations become an ordered route.

  1. Add stops or phone numbers

    Paste a list, pick saved places, or type numbers straight in.

  2. Customers share their location

    Via WhatsApp or SMS — each pin lands on your map automatically.

  3. Send the optimized route

    One link opens the full route in the driver's map app.

  • 30%

    shorter routes, up to

  • <2 min

    from stops to driver-ready

  • 80%+

    location-collection rate

Illustrative figures until real data exists.

Features

Everything a dispatcher needs. Nothing they don't.

  • Traffic-aware optimization

    Order stops by real travel time, not distance alone.

  • WhatsApp + SMS location collection

    Send customers a link to share their exact location — with SMS fallback.

  • Driver route link

    Share a ready route that opens in the driver's map app.

  • Arabic and English, end to end

    Your dispatchers, drivers and customers each use Darb in their own language — down to every WhatsApp message.

  • Saved places

    Save warehouses and frequent destinations to reuse in one tap.

For developers

Skip the dashboard. Plug Darb into the system you already run.

Your ERP, store or dispatch tool can do it all over a REST API — send the stops and get the optimized route back, collect customer locations over WhatsApp, and receive a signed webhook the moment something changes. Nobody has to open Darb.

  • REST + JSON
  • Sandbox keys — test for free
  • Signed webhooks
  • Safe retries (idempotent)
bash
curl -sS -X POST "$DARB_API_BASE/api/v1/routes" \
  -H "Authorization: Bearer $DARB_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: route-2026-07-14-0001" \
  -d '{
    "start": { "lat": 23.60, "lng": 58.40, "label": "Depot" },
    "stops": [
      { "lat": 23.61, "lng": 58.41, "label": "A" },
      { "lat": 23.62, "lng": 58.42, "label": "B" }
    ]
  }'
json
{
  "id": "b6f1c0e2-4d3a-4c1b-9f22-0a1b2c3d4e5f",
  "status": "optimized",
  "stops": [
    { "seq_input": 1, "seq_optimized": 2, "eta": "2026-07-14T08:12:00Z", "label": "A", "lat": 23.61, "lng": 58.41 },
    { "seq_input": 2, "seq_optimized": 1, "eta": "2026-07-14T08:04:00Z", "label": "B", "lat": 23.62, "lng": 58.42 }
  ],
  "total_distance_m": 8450,
  "total_duration_s": 1320,
  "polyline": "yz{|@_ulpE...",
  "handoff_url": "https://<your-darb-app-host>/d/8f3c1a2b"
}
bash
curl -sS -X POST "$DARB_API_BASE/api/v1/campaigns" \
  -H "Authorization: Bearer $DARB_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: campaign-2026-07-14-0001" \
  -d '{
    "contacts": [
      { "phone": "+12025550100", "name": "Ahmed" }
    ],
    "start": { "lat": 23.60, "lng": 58.40, "label": "Depot" },
    "deadline_at": "2026-07-15T17:00:00Z"
  }'
json
{
  "id": "3a9e7b10-6c22-4f88-b0d1-9e8f7a6b5c4d",
  "status": "completed",
  "route_id": "b6f1c0e2-4d3a-4c1b-9f22-0a1b2c3d4e5f",
  "purged_at": null,
  "contacts": [
    { "phone": "+12025550100", "name": "Ahmed", "state": "location_received", "lat": 23.615, "lng": 58.405 }
  ]
}
http
POST /your/webhook/endpoint HTTP/1.1
content-type: application/json
webhook-id: 550e8400-e29b-41d4-a716-446655440000
webhook-timestamp: 1783987200
webhook-signature: v1,K5oyc4Xr8m2xQ0y1x2s3D4e5F6g7H8i9J0kL1m2N3o=
json
{
  "type": "route.optimized",
  "timestamp": "2026-07-14T00:00:00+00:00",
  "data": {
    "route_id": "r_0d3f8c21",
    "status": "completed"
  }
}

Explore the API docsGet an API key — start free

Pricing

A plan that fits your fleet

14-day free trial, then a monthly plan sized to your fleet. Local payments via OmPay across the GCC, charged in your currency.

Pricing

Every plan starts with a 14-day free trial — no card required.

Enterprise Need more than Pro? Custom routes, drivers and integration support.

Contact us

Prices exclude VAT where applicable. OMR billing via OmPay; USD billing for international teams.

Frequently asked questions

How does billing work?

Start with a 14-day free trial — no card required. After that, pick a monthly plan that fits your fleet. Payments are handled locally by OmPay across the GCC and charged in your currency.

What happens to customer data?

Customer locations collected for a route are automatically deleted 30 days after the route completes. Phone numbers are stored in a normalized format and used only to collect locations.

Read the privacy policy
What are the WhatsApp requirements?

Location collection over WhatsApp uses the official WhatsApp Business platform; you connect your own WhatsApp Business number. SMS is available as a fallback where WhatsApp is not set up.