Pricing & Estimates
Before requesting a Journey as a first step it is necessary to obtain the different products configured in your account in order to select the one that fits your needs and keep the Id that will be used in the Journey.
Through this operation you will be able to obtain not only the estimated price but also the products available for your account.
Always estimate before requesting a JourneyWe highly recommend always making an estimate within 5 minutes prior to creating the Journey as this way the driver can see the price of the estimate in the offer and this increases the acceptance rate.
Product_id instead Product_nameWe suggest using the Product_ID and not the Product_name when identifying a product since the name is subject to commercial changes, while the product is constant and will be available as long as Cabify offers it within the commercial offer.
Identifying the right product
Every estimation carries a product object. Each of its fields is meant for a different job:
| Field | Stability | Use it for |
|---|---|---|
id | Different in every city or zone | Booking. Pass it as product_id |
service_type | Closed set of values | Telling service families apart |
slug | Stable; the equivalent product in another city reuses it | Classifying within a family |
name | Subject to commercial changes | Displaying to the user |
service_type is one of:
| Value | Meaning |
|---|---|
standard | Passenger rides |
delivery | Parcel deliveries |
asset_sharing | Vehicle sharing |
moped | Scooter sharing |
You do not need to maintain a table of product ids per zone. /estimates only returns what is available for the origin you asked about, so the zone is already resolved for you. The recommended flow is:
- Call
/estimateswith the journey you want. - Filter the results by
product.service_typeto pick the service family — for exampledeliverywhen your user wants to send a parcel. - If you need to narrow down inside a family, such as a motorbike rather than a car for a delivery, filter by
product.slug. - Create the journey with the
product.idof that same estimation.
Do not hardcode a product idThe same commercial service has a different
idin each city or zone, so an id that works in one city will silently stop matching in another. Always take the id from the estimate you are about to book.
Inside standard, every passenger tier (basic, comfort, executive and so on) shares the same service_type, so use slug to tell them apart. Slugs do not follow a single naming convention, so treat them as values you recognise rather than strings you parse. If you need the exact slugs for the services you operate, ask us and we will confirm them.
Hub Information
When the origin of your estimate is within a large venue (airport, train station, etc.), the response will include a hub field inside each estimation object. This field contains:
- Hub metadata (uid, title, location_id)
- A list of meeting points — designated pick-up locations within the venue, each with coordinates, images, and localized instructions
If a hub is present, you should present the meeting points to the user and include the selected one in the journey creation request. See the Changelog for details.
Hub resolution is best-effortThe
hubfield may benullif hub data is unavailable or takes too long to resolve. You can also use the dedicatedGET /api/v4/hubendpoint to look up hub data independently.
Example: Hub in estimates response
When estimating from Madrid Atocha train station, the hub field in each estimation object will look like:
{
"hub": {
"uid": "562f925c-b900-4c93-bdd9-15a3d621f02f",
"title": {
"es": "Atocha",
"en": "Atocha"
},
"location_id": "2f03be0c-8e66-414c-85be-96fb896a2157",
"active": true,
"meeting_points": [
{
"uid": "e1cbfac4-7149-482d-95fa-0b69a7f464f8",
"title": {
"es": "Bobedas",
"en": "Bobedas"
},
"coordinates": {
"latitude": 40.402344,
"longitude": -3.688157
},
"header_image_url": null,
"bottom_image_url": null,
"instructions": [
{
"es": "Llegando de Atocha en AVE, sube por las rampas y atraviesa las cintas transportadoras hasta el vestíbulo.",
"en": "Arriving from Atocha by AVE train, head up the ramps and walk through the moving walkways towards the arrivals hall.",
"step_image_url": null
},
{
"es": "Una vez en el vestíbulo, gira a la derecha siguiendo las indicaciones hacia P2-P3 (Parking Bóvedas).",
"en": "Once at the arrivals hall, turn right following the signs to P2-P3 (Bóvedas Parking).",
"step_image_url": null
},
{
"es": "Sal por la puerta hacia el Parking.",
"en": "Exit through the door to the Parking lot.",
"step_image_url": null
},
{
"es": "Espera al conductor en la acera.",
"en": "Wait for the driver on the sidewalk.",
"step_image_url": null
},
{
"es": "Recuerda que puedes contactar al conductor en caso de cualquier duda con el punto de recogida.",
"en": "Remember that you can contact the driver if you have any questions with the pick up point.",
"step_image_url": null
},
{
"es": "¡Disfruta el viaje! 😃",
"en": "Enjoy the ride! 😃",
"step_image_url": null
}
]
}
]
}
}
Try it in sandboxThis hub is available in the sandbox environment. Call
GET /api/v4/hub?latitude=40.402344&longitude=-3.688157or estimate with origin at those coordinates to get this response. See Sandbox Environment for details.
Updated 28 days ago
