Cost matrices are the backbone of sequencing, dispatch, and territory planning. MapQuest's Async Route Matrix API now supports matrices up to 10,000×10,000 origin–destination pairs — enterprise-scale many-to-many travel times and distances without slicing the problem into dozens of smaller jobs by hand.
This capability is enterprise only. Full reference: Async Route Matrix — Submit.
How the async flow works
Large matrices take time. The API uses a three-step flow:
- Submit — POST origins, destinations, and options; receive a job
idand status URL. - Poll status — check progress until the job completes.
- Retrieve results — download the finished matrix (distances in meters, times in seconds).
Submit endpoint: https://www.mapquestapi.com/directions/v2/routematrix/jobs
What you can configure
- origins / destinations: arrays of
{ lat, lng }— min 1, max 10,000 each - transport: car, truck, pedestrian, bicycle (default: car)
- mode: fastest or shortest (default: fastest)
- region: optional GeoJSON polygon to constrain routing (diameter under ~400 km)
- departureTime: ISO 8601 (or
"any") when a region is provided
Without a region, you can run unbounded large matrices (including 10,000×10,000). With a region, you get tighter geographic control and support for departure-time routing — best for focused regional jobs.
Example: submit a job
curl -X POST "https://www.mapquestapi.com/directions/v2/routematrix/jobs?key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"origins": [
{"lat": 39.7392, "lng": -104.9903},
{"lat": 40.7128, "lng": -74.0060}
],
"destinations": [
{"lat": 34.0522, "lng": -118.2437},
{"lat": 41.8781, "lng": -87.6298}
],
"options": {"transport": "car", "mode": "fastest"}
}'
Response:
{
"id": "YWJjMTIzLWRlZjQ1Ni1naGk3ODk6dXMtZWFzdC0xOm0",
"status": "accepted",
"href": "https://www.mapquestapi.com/directions/v2/routematrix/jobs/YWJjMTIzLWRlZjQ1Ni1naGk3ODk6dXMtZWFzdC0xOm0"
}
Billing snapshot
Transactions depend on origins (S) and destinations (D):
- If S or D is less than 5: transactions = S × D
- If both are 5 or greater: transactions = max(S, D) × 5
Example: a 100×100 matrix bills as 500 transactions.
Built for
- Multi-stop sequencing and route optimization inputs
- Dispatch and fleet assignment at city or national scale
- Territory and coverage planning from large stop sets
- Backend jobs that need a full cost matrix, not pairwise routing loops
Ready to try it? Review the Async Route Matrix docs and contact us if you need enterprise access for large-matrix workloads.


