{
  "name": "Apple MapKit JS",
  "slug": "apple-mapkit",
  "website_url": "https://developer.apple.com/maps/web/",
  "vendor_description": "\"MapKit JS lets you embed interactive maps directly into your websites across platforms and operating systems, including iOS and Android.\"",
  "categories": [
    "maps"
  ],
  "summary": "Apple MapKit JS is a JavaScript library that lets developers embed interactive Apple Maps into websites and web applications, supporting annotations, GeoJSON overlays, satellite and hybrid views, street-level Look Around panoramas, indoor mapping, geocoding, search, and turn-by-turn routing. It draws on Apple's proprietary map data covering 35+ countries, TomTom traffic incidents, and transit feeds from hundreds of agencies worldwide. Access requires an Apple Developer Program membership ($99/year), which includes 250,000 map views and 25,000 service calls per day at no additional charge; higher quotas require contacting Apple.",
  "capabilities": {
    "supported_actions": [
      "interactive_js_map",
      "static_map_image",
      "marker_annotations",
      "polygon_overlays",
      "geojson_overlays",
      "look_around_street_view",
      "indoor_maps_imdf",
      "satellite_imagery",
      "hybrid_map",
      "muted_standard_map",
      "geocoding",
      "search",
      "directions_routing",
      "place_lookup",
      "place_cards",
      "camera_zoom_range",
      "camera_boundary",
      "custom_callouts",
      "draggable_annotations",
      "traffic_layer",
      "cycling_directions",
      "typescript_support",
      "jwt_authentication"
    ],
    "supported_regions": [
      "global coverage with proprietary Apple Maps data and partner data sources",
      "OpenStreetMap contributors data included",
      "TomTom traffic incidents data",
      "transit data for hundreds of agencies worldwide (North America, Europe, Asia, Australia)",
      "proprietary in-house Apple Maps data covering 940 million people across 35+ countries"
    ],
    "supported_languages": [],
    "input_types": [
      "center coordinates (latitude/longitude)",
      "CoordinateRegion (center + span)",
      "zoom level / camera zoom range",
      "GeoJSON data",
      "marker/annotation definitions",
      "Place IDs",
      "address strings (geocoding)",
      "bounding box / camera boundary",
      "JWT authentication token",
      "origin/destination for directions (address or coordinate)"
    ],
    "output_types": [
      "interactive map canvas (JavaScript/HTML)",
      "static map image (PNG via Snapshots API)",
      "place cards with rich detail",
      "Look Around panoramic view",
      "indoor map (IMDF-based)",
      "annotation overlays",
      "polygon/GeoJSON overlays",
      "route polylines with turn-by-turn steps and travel time estimates"
    ],
    "webhooks_supported": false,
    "sandbox_available": false,
    "sdk_languages": [
      "JavaScript (npm loader)"
    ],
    "mcp_server_available": false
  },
  "integration": {
    "api_style": "rest",
    "base_url": "https://cdn.apple-mapkit.com/mk/6/mapkit.core.js",
    "api_version": "6",
    "versioning_scheme": "url",
    "stability": "ga",
    "deprecation_policy_url": null,
    "auth_methods": [
      "jwt"
    ],
    "auth_docs_url": "https://developer.apple.com/documentation/mapkitjs/creating-a-maps-token",
    "idempotency_supported": null,
    "error_format": "vendor-specific",
    "webhook_signing": null,
    "webhook_events_url": null,
    "rate_limit_requests": null,
    "rate_limit_window": null,
    "sdk_packages": [
      {
        "package": "@apple/mapkit-loader",
        "language": "JavaScript (npm loader)",
        "official": true,
        "repo_url": "https://github.com/apple/mapkit-loader"
      }
    ],
    "mcp_url": null,
    "quickstart_url": "https://developer.apple.com/maps/web/"
  },
  "pricing": {
    "pricing_model": "contact_sales",
    "has_published_pricing": false,
    "starting_price_usd": null,
    "price_basis": null,
    "free_tier_available": true,
    "free_tier_limit": "250,000 map views/day + 25,000 service calls/day per Apple Developer Program membership",
    "free_tier_details": "250,000 map views per day and 25,000 service calls per day, plus 25,000 Snapshots unique requests per day, per Apple Developer Program membership. Requires Apple Developer Program enrollment ($99/year for individuals/companies; fee waivers available for qualifying nonprofits, educational institutions, and government entities). No per-use pricing published beyond these free daily limits.",
    "minimum_commitment": null,
    "self_serve_signup": true,
    "requires_sales_call": false,
    "requires_verification": true,
    "enterprise_plan_available": false,
    "price_points": []
  },
  "compliance": {
    "soc2": null,
    "hipaa": null,
    "gdpr": null,
    "iso_27001": null,
    "pci_dss": null,
    "sla_published": false,
    "sla_url": null,
    "data_retention_policy_url": null,
    "documented_rate_limits": "250,000 map views per day and 25,000 service calls per day per Apple Developer Program membership (shared across MapKit JS and Apple Maps Server API). Snapshots: 25,000 unique requests per day. Exceeding service calls returns HTTP 429. Contact Apple for higher-capacity quota increases.",
    "known_restrictions": [
      "Apple Developer Program membership required ($99/year) to obtain API keys",
      "Map data may not be cached, prefetched, or stored except as temporary and only as necessary for Apple Maps Services (Schedule 6 / Attachment 6 of Apple Developer Program License Agreement)",
      "May not charge fees to end users solely for access to the Apple Maps Service",
      "May not sell access to the Apple Maps Service",
      "May not create a substitute or similar service using Apple Maps Service",
      "Apple Maps Service is for use only in connection with Your Applications, websites, or web applications",
      "Apple reserves right to change, suspend, or deny access at any time without liability (no SLA)",
      "Attribution to Apple Maps and underlying data providers (TomTom, OpenStreetMap, etc.) required in displayed maps"
    ]
  },
  "developer": {
    "docs_url": "https://docs.developer.apple.com",
    "api_reference_url": "https://developer.apple.com/documentation",
    "openapi_spec_url": null,
    "postman_collection_url": null,
    "changelog_url": "https://docs.developer.apple.com/whats-new",
    "status_page_url": null,
    "llms_txt_url": null,
    "markdown_docs_url": null,
    "rendering": "static"
  },
  "adoption": {
    "launched_at": "2018-06-01",
    "ga_date": "2026-06-09",
    "github_stars": null,
    "github_stars_at": null,
    "notable_customers": []
  },
  "scores": {
    "agent_friendliness": 20,
    "pricing_transparency": 30,
    "setup_speed": 75,
    "docs_quality": 45,
    "procurement_friction": 70,
    "trust_readiness": 0,
    "best_for": [
      "Prototypes and side projects - free to start, no sales call",
      "Teams needing broad API coverage out of the box"
    ],
    "avoid_if": [
      "You need transparent pricing up front",
      "You have strict compliance requirements"
    ]
  },
  "sources": [
    {
      "field": "vendor_description",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "MapKit JS lets you embed interactive maps directly into your websites across platforms and operating systems, including iOS and Android.",
      "confidence": "high"
    },
    {
      "field": "categories (routing added)",
      "url": "https://developer.apple.com/documentation/mapkitjs/directionsrequest/transporttype",
      "excerpt": "Automobile, Walking, PublicTransit, Cycling — transport types supported in the MapKit JS Directions API",
      "confidence": "high"
    },
    {
      "field": "categories (routing added)",
      "url": "https://developer.apple.com/videos/play/wwdc2025/204/",
      "excerpt": "directions.route({ origin: safariPlayground, destination: cherryHillFountain, transportType: mapkit.Directions.Transport.Cycling }, ...)",
      "confidence": "high"
    },
    {
      "field": "free_tier_available / free_tier_details",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "Map Views: 250,000 daily limit. Service Calls: 25,000 daily limit. Snapshots: 25,000 unique requests per day per Apple Developer Program membership.",
      "confidence": "high"
    },
    {
      "field": "free_tier_available / free_tier_details",
      "url": "https://developer.apple.com/maps/resources/",
      "excerpt": "Add the world's most beautiful maps to your website at no cost with MapKit JS.",
      "confidence": "high"
    },
    {
      "field": "has_published_pricing / pricing_model",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "For additional capacity needs, contact us. — no public pricing published for capacity above the free daily limits.",
      "confidence": "high"
    },
    {
      "field": "has_published_pricing / pricing_model",
      "url": "https://developer.apple.com/forums/thread/758692",
      "excerpt": "Apple has not published a public pricing structure for MapKit JS beyond the free tier. Those needing higher capacity are directed to contact Apple directly.",
      "confidence": "high"
    },
    {
      "field": "enterprise_plan_available",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "For additional capacity needs, contact us. — only a capacity-increase contact form exists; no documented enterprise plan or tier pricing is published.",
      "confidence": "high"
    },
    {
      "field": "iso_27001",
      "url": "https://support.apple.com/guide/certifications/apple-internet-services-security-apc34d2c0468b/web",
      "excerpt": "Apple maintains certifications in compliance with the ISO/IEC 27001 and ISO/IEC 27018 standards. [In-scope services listed: Apple accessory services, Apple Business Essentials, Apple Business Manager, APNs, Apple School Manager, Claris Connect, Claris Studio, FaceTime, FileMaker Cloud, iCloud, iMessage, iWork, Managed Apple Accounts, Schoolwork, Siri — MapKit JS is not listed.]",
      "confidence": "high"
    },
    {
      "field": "gdpr",
      "url": "https://www.apple.com/legal/privacy/en-ww/governance/",
      "excerpt": "Apple requires its employees who have access to Apple customer data and personal information to undergo an additional Privacy and Security Training course on a biannual basis or in response to updated laws such as the EU General Data Protection Regulation (GDPR).",
      "confidence": "high"
    },
    {
      "field": "requires_verification",
      "url": "https://developer.apple.com/help/account/capabilities/create-a-maps-identifier-and-private-key/",
      "excerpt": "Register a Maps identifier for each app that uses MapKit JS. In Certificates, Identifiers & Profiles, click Identifiers in the sidebar.",
      "confidence": "high"
    },
    {
      "field": "sla_published",
      "url": "https://developer.apple.com/support/terms/apple-developer-program-license-agreement/",
      "excerpt": "Apple has no express or implied obligation to provide, or continue to provide, the Apple Maps Service and may suspend or discontinue all or any portion of the Apple Maps Service at any time, with no liability for losses, damages or costs incurred.",
      "confidence": "high"
    },
    {
      "field": "directions_routing / cycling_directions (supported_actions)",
      "url": "https://developer.apple.com/videos/play/wwdc2025/204/",
      "excerpt": "Cycling Directions (NEW): MapKit JS now supports cycling directions as a new transportation type. Takes advantage of paths and trails unavailable when driving.",
      "confidence": "high"
    },
    {
      "field": "directions_routing / cycling_directions (supported_actions)",
      "url": "https://developer.apple.com/documentation/mapkitjs/directions",
      "excerpt": "Directions | Apple Developer Documentation — an object that provides directions and estimated travel time based on the options you provide.",
      "confidence": "high"
    },
    {
      "field": "sdk_languages / typescript_support",
      "url": "https://webkit.org/blog/18027/discover-mapkit-js-6-rebuilt-for-todays-web-developer/",
      "excerpt": "TypeScript Support: Automatically sources full TypeScript definitions through DefinitelyTyped. NPM Package: Available as @apple/mapkit-loader for modern build pipelines.",
      "confidence": "high"
    },
    {
      "field": "self_serve_signup",
      "url": "https://developer.apple.com/programs/",
      "excerpt": "Enrollment in the Apple Developer Program is available through the Apple Developer app and on the web.",
      "confidence": "high"
    },
    {
      "field": "documented_rate_limits",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "Map Views: 250,000 daily limit. Service Calls: 25,000 daily limit per Apple Developer Program membership.",
      "confidence": "high"
    },
    {
      "field": "documented_rate_limits",
      "url": "https://developer.apple.com/forums/thread/807656",
      "excerpt": "When the 25,000 service calls are exceeded, the API returns HTTP 429.",
      "confidence": "high"
    },
    {
      "field": "known_restrictions",
      "url": "https://developer.apple.com/support/terms/apple-developer-program-license-agreement/",
      "excerpt": "Apple Maps Service is for use by You only in connection with Your Applications, websites, or web applications. You may not charge fees to end users solely for access to the Apple Maps Service.",
      "confidence": "high"
    },
    {
      "field": "known_restrictions",
      "url": "https://developer.apple.com/forums/thread/807656",
      "excerpt": "Schedule 6 section 2.5 restricts caching, prefetching, or storing map data except when temporary and only as necessary for Apple Maps Services, and any cached data must be deleted after use.",
      "confidence": "high"
    },
    {
      "field": "webhooks_supported",
      "url": "https://webkit.org/blog/18027/discover-mapkit-js-6-rebuilt-for-todays-web-developer/",
      "excerpt": "MapKit JS v6 adopts the standard browser EventTarget model consistently across the API — standard DOM event listeners for annotation selections and map region changes, no server-side webhooks.",
      "confidence": "high"
    },
    {
      "field": "sandbox_available",
      "url": "https://developer.apple.com/maps/resources/",
      "excerpt": "No dedicated sandbox environment documented; only a production dashboard (maps.developer.apple.com) for usage monitoring.",
      "confidence": "high"
    },
    {
      "field": "supported_regions",
      "url": "https://gspe21-ssl.ls.apple.com/html/attribution.html",
      "excerpt": "Major sources include OpenStreetMap contributors, TomTom, Ambita, Norwegian Mapping Authority, and various government agencies (Australia, Canada, California, etc.). Traffic: TomTom incidents data.",
      "confidence": "high"
    },
    {
      "field": "auth_methods",
      "url": "https://developer.apple.com/help/account/capabilities/create-a-maps-identifier-and-private-key/",
      "excerpt": "Get the key identifier (_kid_) to create a JSON Web Token (JWT) that you'll use to communicate with the capabilities you enabled.",
      "confidence": "high"
    },
    {
      "field": "auth_methods",
      "url": "https://webkit.org/blog/18027/discover-mapkit-js-6-rebuilt-for-todays-web-developer/",
      "excerpt": "You can now use a static token bound to your website's domain, generated directly from the Apple Developer website",
      "confidence": "high"
    },
    {
      "field": "auth_docs_url",
      "url": "https://developer.apple.com/documentation/mapkitjs/creating-a-maps-token",
      "excerpt": "Creating a Maps token | Apple Developer Documentation",
      "confidence": "high"
    },
    {
      "field": "base_url",
      "url": "https://webkit.org/blog/18027/discover-mapkit-js-6-rebuilt-for-todays-web-developer/",
      "excerpt": "https://cdn.apple-mapkit.com/mk/6/mapkit.core.js",
      "confidence": "high"
    },
    {
      "field": "api_version",
      "url": "https://webkit.org/blog/18027/discover-mapkit-js-6-rebuilt-for-todays-web-developer/",
      "excerpt": "With our latest version 6 release, we've made it easier than ever for you to integrate MapKit JS into your apps and websites",
      "confidence": "high"
    },
    {
      "field": "versioning_scheme",
      "url": "https://webkit.org/blog/18027/discover-mapkit-js-6-rebuilt-for-todays-web-developer/",
      "excerpt": "https://cdn.apple-mapkit.com/mk/6/mapkit.core.js",
      "confidence": "high"
    },
    {
      "field": "versioning_scheme",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "https://cdn.apple-mapkit.com/mk/5.x.x/mapkit.js",
      "confidence": "high"
    },
    {
      "field": "ga_date",
      "url": "https://webkit.org/blog/18027/discover-mapkit-js-6-rebuilt-for-todays-web-developer/",
      "excerpt": "With our latest version 6 release, we've made it easier than ever for you to integrate MapKit JS into your apps and websites",
      "confidence": "high"
    },
    {
      "field": "launched_at",
      "url": "https://asciiwwdc.com/2018/sessions/212",
      "excerpt": "WWDC 2018 Session 212 - Introducing MapKit JS",
      "confidence": "high"
    },
    {
      "field": "launched_at",
      "url": "https://www.mactrast.com/2018/06/apple-debuts-apple-maps-mapkit-js-at-wwdc-18-allows-embedding-maps-in-website/",
      "excerpt": "Apple Debuts Apple Maps MapKit JS at WWDC 18, Allows Embedding Maps in Website",
      "confidence": "high"
    },
    {
      "field": "sdk_packages",
      "url": "https://webkit.org/blog/18027/discover-mapkit-js-6-rebuilt-for-todays-web-developer/",
      "excerpt": "New in v6, the MapKit JS loader ships as an NPM package, so the framework integrates directly into modern build pipelines.",
      "confidence": "high"
    },
    {
      "field": "sdk_packages",
      "url": "https://github.com/apple/mapkit-loader",
      "excerpt": "Loads Apple MapKit JS script dynamically from Apple MapKit CDN. This package exposes the returned `mapkit` object with type definitions.",
      "confidence": "high"
    },
    {
      "field": "free_tier_limit",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "250,000 map views per day and 25,000 service calls per day per Apple Developer Program membership",
      "confidence": "high"
    },
    {
      "field": "free_tier_limit",
      "url": "https://developer.apple.com/forums/thread/127493",
      "excerpt": "If you are doing web app development with MapKit JS, you get a daily limit of 250,000 map views and 25,000 service calls per Apple Developer Program membership.",
      "confidence": "high"
    },
    {
      "field": "quickstart_url",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "Apple Maps on the Web - Maps - Apple Developer",
      "confidence": "high"
    },
    {
      "field": "requires_verification",
      "url": "https://developer.apple.com/help/account/service-configurations/maps-tokens/",
      "excerpt": "Account Holder and Admin role required to create and revoke maps tokens.",
      "confidence": "high"
    },
    {
      "field": "error_format",
      "url": "https://developer.apple.com/forums/thread/113670",
      "excerpt": "MapKit JS auth 401 | Apple Developer Forums",
      "confidence": "medium"
    },
    {
      "field": "starting_price_usd",
      "url": "https://developer.apple.com/maps/web/",
      "excerpt": "For additional capacity needs, contact Apple",
      "confidence": "high"
    }
  ],
  "fields_not_found": [
    "exact tile type (raster vs vector) - Apple does not publicly document tile format",
    "supported map label languages (localization languages not listed in public docs)",
    "SOC 2 certification status - not found on Apple trust/certifications pages",
    "HIPAA compliance - not found on Apple trust/certifications pages",
    "PCI DSS compliance - not found on Apple trust/certifications pages",
    "GDPR formal certification - Apple's governance page references GDPR training only, not a certification",
    "ISO 27001 scope for MapKit JS - Apple's ISO 27001 scope list does not include MapKit JS or developer APIs",
    "published SLA / uptime commitment",
    "sandbox / test environment separate from production",
    "exact overage pricing beyond free daily limits",
    "enterprise plan pricing - only a capacity-increase contact form exists, no published enterprise plan",
    "starting_price_usd",
    "price_basis",
    "rate_limit_requests",
    "rate_limit_window",
    "sla_url",
    "data_retention_policy_url",
    "deprecation_policy_url",
    "webhook_events_url",
    "mcp_url",
    "notable_customers"
  ],
  "source_confidence": "high",
  "last_verified_at": "2026-06-14T00:00:00.000Z",
  "contribute": {
    "note": "This data is crowd-editable. Suggest corrections or leave a review via these endpoints - no auth required, requests are rate-limited, and every submission is reviewed before it goes live. For a field edit, {field} is any key in this response and a citation is required.",
    "endpoints": [
      {
        "action": "review",
        "label": "Leave a review or comment",
        "method": "POST",
        "url": "https://apio.sh/api/feedback/apple-mapkit",
        "example_body": {
          "kind": "review",
          "rating": 5,
          "body": "Your experience with this API…"
        }
      },
      {
        "action": "field_edit",
        "label": "Suggest a correction to a field (cite a source)",
        "method": "POST",
        "url": "https://apio.sh/api/suggest/apple-mapkit/{field}",
        "example_body": {
          "value": "corrected value",
          "citations": [
            {
              "url": "https://source.example/page",
              "excerpt": "supporting quote"
            }
          ],
          "note": "what changed and why"
        }
      },
      {
        "action": "new_api",
        "label": "Suggest a new API to add",
        "method": "POST",
        "url": "https://apio.sh/api/suggest/api",
        "example_body": {
          "value": {
            "name": "Acme API",
            "website_url": "https://acme.example"
          },
          "citations": [
            {
              "url": "https://acme.example"
            }
          ]
        }
      },
      {
        "action": "token",
        "label": "Optional - raise your rate limit",
        "method": "GET",
        "url": "https://apio.sh/api/feedback/token"
      }
    ]
  }
}