Overview

Overview

The Deliveroo Rider Status API lets you receive real-time updates about the rider assigned to an order — their status, live location, and estimated arrival — pushed to your system as webhooks. Unlike request/response APIs, you don't poll for rider information; Deliveroo sends it to a webhook URL you register.

You can begin testing here.

Registering your webhook

Register a Rider Status webhook URL in the Developer Portal. Deliveroo will POST a rider status event to that URL each time the rider's status or details change for an order under your integration.

Securing webhooks

Rider status webhooks are signed. Verify the signature before trusting a payload — see Securing Webhooks.

Event payload

Each event describes an order and the rider(s) assigned to it:

{
  "order_id": "GB1234567",
  "restaurant_brand_id": "your-brand-external-id",
  "stacked_with": ["GB1234568"],
  "delivery_priority": ["GB1234567", "GB1234568"],
  "delivery_stack": [
    { "order_id": "GB1234568", "delivery_priority": 1, "order_source": "deliveroo", "delivery_status": "rider_in_transit" }
  ],
  "delivery_eta": { "lower": "2026-07-08T11:40:00Z", "upper": "2026-07-08T11:50:00Z" },
  "riders": [
    {
      "full_name": "Alex M.",
      "status_log": [
        { "at": "2026-07-08T11:20:00Z", "status": "rider_assigned" },
        { "at": "2026-07-08T11:35:00Z", "status": "rider_in_transit" }
      ],
      "estimated_arrival_time": "2026-07-08T11:45:00Z",
      "at": "2026-07-08T11:35:02Z",
      "lat": 51.5074,
      "lon": -0.1278,
      "accuracy_in_meters": 12.5,
      "contact_number": "+44...",
      "customer_to_rider_contact_number": "+44...",
      "bridge_code": "1234",
      "bridge_number": "+44..."
    }
  ]
}

Fields

FieldDescription
order_idDeliveroo order ID
restaurant_brand_idYour restaurant brand's external ID
stacked_withOther order IDs stacked with this one
delivery_priorityOrder IDs in delivery-priority order
delivery_stack[]Orders in the rider's delivery stack — order_id, delivery_priority, order_source, delivery_status
delivery_etaDelivery ETA window (lower/upper, RFC 3339). Omitted when no estimate is available. Same window as in the Order webhook
riders[]The rider(s) assigned to this order (see below)

Rider fields (riders[])

FieldDescription
full_nameRider full name
status_log[]Append-only log of rider status changes — each entry has at (timestamp) and status (see values below)
estimated_arrival_timeRider's estimated arrival time
atTimestamp when this update was generated
lat / lonRider's current GPS latitude / longitude
accuracy_in_metersAccuracy radius of the GPS fix, in metres
contact_numberPartner-to-rider contact number
bridge_numberPartner-to-rider bridge number (masked call-bridging line)
bridge_codePartner-to-rider bridge code
customer_to_rider_contact_numberCustomer-to-rider contact number

Rider status values

StatusMeaning
rider_assignedRider assigned for pickup
rider_confirmed_at_restaurantRider arrival at the restaurant confirmed in-app
rider_arrivedRider arrived at restaurant
rider_in_transitRider en route to customer
rider_nearbyRider has broken the geo-fence and is near the customer
rider_confirmed_at_customerRider confirmed at customer
rider_unassignedRider unassigned from the order


Did this page help you?