{
  "$schema": "https://mapmap.ai/pricing.json",
  "provider": "MapMap",
  "updated": "2026-07-14",
  "currency": "GBP",
  "notes": "Published pricing. Keys carry hard limits; paid usage is prepaid credit or a monthly plan, so no post-paid overage is possible. Pay-as-you-go per-call pricing is two-speed and tiered/marginal: a cheap Standard class for generic routing and data, and a Premium class for truck routing and ADR compliance — where MapMap is, as of July 2026, the only self-serve option with published per-call pricing. Each band applies only to the calls that fall within it, selected by month-to-date usage. Fractional pence are billed exactly because the gateway meters an internal millipence ledger (1p = 1000 millipence); every external field, including credits_pence, stays in pence.",
  "api": {
    "free_offline_eval_mib": 2048,
    "free_tier": {
      "free_tier_calls": 50000,
      "requests_per_month": 50000,
      "requires": "email verification of the key",
      "offline_eval_download_mib": 2048,
      "provisional_key": {
        "calls": 1000,
        "valid_hours": 72,
        "issuance": "one call, card-free: POST /v1/keys {email, accept_tos}"
      },
      "card_required": false,
      "behaviour": "hard stop at the limit unless prepaid credit is present"
    },
    "plans": [
      {
        "id": "free",
        "name": "Free",
        "monthly_gbp": 0,
        "included_calls": 50000,
        "download_mib": 2048,
        "requires": "email verification, no card",
        "mau_included": 1000
      },
      {
        "id": "starter",
        "name": "Starter",
        "monthly_gbp": 49,
        "included_calls": 250000,
        "download_mib": 20480,
        "mau_included": 5000
      },
      {
        "id": "growth",
        "name": "Growth",
        "monthly_gbp": 299,
        "included_calls": 2000000,
        "download_mib": 102400,
        "mau_included": 25000
      },
      {
        "id": "scale",
        "name": "Scale",
        "monthly_gbp": 1250,
        "included_calls": 10000000,
        "download_mib": 512000,
        "mau_included": 100000
      }
    ],
    "plan_notes": "Subscriptions are billed monthly by Stripe (POST /api/checkout {kind:\"plan\", plan, key_id, email}). The plan raises monthly_quota on every verified key of the subscribing email, idempotently per billing period, and raises the offline territory-map download allowance (download_mib) to match. Overage on every plan falls back to prepaid credit at the two-speed pay-as-you-go rate (Standard vs Premium below). Cancellation returns the quota to the free tier and the download allowance to the free_offline_eval_mib (~2 GB/month).",
    "offline_downloads_note": "Offline territory-map downloads (the ~1 GB layer files) are byte-metered per identity per calendar month, separate from API calls. The free tier includes a ~2 GB/month offline-evaluation allowance (free_offline_eval_mib): enough to install one region on a device for a proof of concept, not to equip a fleet. Provisional (unverified) keys cannot download layers. Production offline (fleet) downloads are included with a plan (download_mib above) or the per-vehicle SDK licence. Online API use never needs offline downloads.",
    "pay_as_you_go": {
      "model": "prepaid credit, two-speed tiered marginal per-call, no subscription",
      "free_tier_calls": 50000,
      "enterprise_threshold_calls": 25000000,
      "standard_tiers": "1000000:200,10000000:150,:100",
      "premium_tiers": "1000000:1000,10000000:700,:400",
      "price_classes": {
        "standard": {
          "label": "Standard routing and data",
          "applies_to": "car/bus/motorcycle/scooter/bicycle/pedestrian routing, geocoding, matrix, isochrone, map-matching (anything that is not truck/ADR)",
          "model": "tiered_marginal",
          "from_pence_per_call": 0.2,
          "bands": [
            {
              "from_call": 50001,
              "to_call": 1000000,
              "pence_per_call": 0.2
            },
            {
              "from_call": 1000001,
              "to_call": 10000000,
              "pence_per_call": 0.15
            },
            {
              "from_call": 10000001,
              "to_call": null,
              "pence_per_call": 0.1
            }
          ],
          "gateway_env": "SN_PRICE_TIERS_STANDARD=1000000:200,10000000:150,:100"
        },
        "premium": {
          "label": "Truck and ADR compliance",
          "applies_to": "truck routing and ADR compliance: /adr/check, costing:truck, a top-level adr object, hazmat:true, or a truck vendor query param on the OSRM endpoint",
          "model": "tiered_marginal",
          "from_pence_per_call": 1,
          "bands": [
            {
              "from_call": 50001,
              "to_call": 1000000,
              "pence_per_call": 1
            },
            {
              "from_call": 1000001,
              "to_call": 10000000,
              "pence_per_call": 0.7
            },
            {
              "from_call": 10000001,
              "to_call": null,
              "pence_per_call": 0.4
            }
          ],
          "gateway_env": "SN_PRICE_TIERS=1000000:1000,10000000:700,:400"
        }
      },
      "note": "50,000 calls a month are free on both classes. Beyond that, pricing is two-speed, tiered and marginal by month-to-date usage. Standard (generic routing and data): 0.2p per call up to 1M calls/month, 0.15p from 1M to 10M, 0.1p beyond. Premium (truck routing and ADR compliance): 1p, 0.7p, 0.4p across the same bands. The class is decided from each request automatically. Each band applies only to the calls that fall within it. Fractional pence bill exactly because the gateway ledger meters in millipence (1p = 1000 millipence). Above 25M calls a month, contact sales.",
      "top_up": {
        "method": "Stripe Checkout (card)",
        "amounts_gbp": [
          10,
          25,
          50
        ]
      },
      "balance": "GET /v1/keys/self -> credits_pence (floored) and credits_millipence (full precision)"
    },
    "agents": {
      "model": "pay as you go, two-speed tiered marginal per-call, x402-ready",
      "standard_per_call_pence": {
        "first_1m": 0.2,
        "to_10m": 0.15,
        "beyond_10m": 0.1
      },
      "premium_per_call_pence": {
        "first_1m": 1,
        "to_10m": 0.7,
        "beyond_10m": 0.4
      },
      "volume_discounts": "two-speed tiered pay-as-you-go bands above, plus lower effective rates on the monthly plans (Starter/Growth/Scale)",
      "x402": "402 responses use the x402 wire format; when the deployment has SN_X402_* configured, accepts[] advertises machine payment and X-PAYMENT settles per call. Otherwise prepaid credit applies.",
      "signup": "POST {gateway}/v1/keys {email, accept_tos:true} -> working key in one call"
    }
  },
  "sdk_per_vehicle": {
    "model": "per vehicle per month, billed annually, invoiced (not self-serve)",
    "editions": {
      "core": "offline navigation + ADR restrictions enforced offline + territory updates for one region",
      "plus": "Core plus additional regions and priority support"
    },
    "offline_downloads": "Production offline (fleet) territory-map downloads and ongoing OTA updates are included: the SDK licence is the natural home for offline deployment and lifts the per-identity download allowance beyond the free ~2 GB/month evaluation cap.",
    "bands": [
      {
        "devices": 500,
        "core_gbp_per_vehicle_month": 3.0,
        "plus_gbp_per_vehicle_month": 5.0
      },
      {
        "devices": 2500,
        "core_gbp_per_vehicle_month": 2.4,
        "plus_gbp_per_vehicle_month": 4.0
      },
      {
        "devices": 10000,
        "core_gbp_per_vehicle_month": 1.8,
        "plus_gbp_per_vehicle_month": 3.0
      },
      {
        "devices": 25000,
        "band": "25000+",
        "core_gbp_per_vehicle_month": 1.2,
        "plus_gbp_per_vehicle_month": 2.2
      }
    ],
    "contact": "sales@mapmap.ai"
  },
  "self_host": {
    "model": "commercial licence + territory data subscription + support",
    "components": {
      "platform_licence": {
        "billing": "annual, quoted",
        "tiered_by": "fleet size",
        "bands": [
          "up to 100 vehicles",
          "up to 1,000 vehicles",
          "unlimited / enterprise"
        ]
      },
      "territory_data_subscription": {
        "billing": "per territory, per year",
        "includes": "signed, QA'd, restriction-audited territory packages with ongoing OTA updates"
      },
      "support_and_sla": {
        "tiers": [
          "standard",
          "priority",
          "escrow and 24/7"
        ],
        "includes": "security-patch SLAs, priority support, source escrow"
      },
      "professional_services": [
        "custom territory builds",
        "bespoke restriction overlays",
        "integration"
      ]
    },
    "includes": [
      "Docker distro (gateway + routing engine + optional geocoder + MCP server)",
      "signed territory packages and OTA update channel",
      "CycloneDX SBOM and licence-compliance pack",
      "support and patch SLAs per procurement pack"
    ],
    "contact": "sales@mapmap.ai"
  },
  "design_partner_programme": {
    "status": "selective",
    "note": "A selective, high-touch programme for a small number of fleets: direct engineering access and preferential pricing. Contact sales@mapmap.ai."
  },
  "machine_endpoints": {
    "signup": "POST {gateway}/v1/keys",
    "key_state": "GET {gateway}/v1/keys/self",
    "subscribe": "POST https://mapmap.ai/api/checkout {kind:\"plan\", plan, key_id, email}",
    "openapi": "{gateway}/openapi.json",
    "llms": "https://mapmap.ai/llms.txt",
    "x402": "https://mapmap.ai/docs/x402"
  },
  "sdk_per_mau": {
    "model": "per monthly active user, self-serve, metered via the X-MapMap-User header",
    "included_mau_free_tier": 1000,
    "per_mau_pence_beyond": 30,
    "plans_include": {
      "starter": 5000,
      "growth": 25000,
      "scale": 100000
    },
    "billing": "each NEW distinct user in a calendar month debits the prepaid ledger once at first sight; serving is never interrupted for end users (fail-open, overdraw flagged on /v1/keys/self)",
    "audience": "app developers who are not fleets; fleets use the per-vehicle licence above"
  }
}