specification: API Commons Plans specificationVersion: '0.1' schema: https://raw.githubusercontent.com/api-evangelist/interface-research/main/schema/api-commons.yml#/$defs/Plans provider: Android providerId: android created: '2026-05-04' # Provenance stamped 2026-08-11: this artifact was written by the API Evangelist # bulk sweep dated 2026-05-04, not harvested from the provider. See roadmap#35. method: generated modified: '2026-05-05' reconciled: true tags: - Android - Mobile Development - Google Play - Maps - Firebase - AdMob - SDK description: >- The Android developer surface is a multi-product platform spanning free SDKs (Android framework, Jetpack, NDK, ML Kit on-device, CameraX, Health Connect, Wear OS, Android TV, Android for Cars) and monetized Google services. Real pricing exists for Google Play (one-time $25 developer registration; 15% / 30% service fee on paid apps and IAP, 15% on subscriptions and on first $1M annual revenue), Google Maps Platform (per-1000-call pricing after 10K monthly free events), and Firebase (Spark free tier with hard limits; Blaze pay-as-you-go on Cloud Storage at $0.026/GB and Realtime Database at $5/GB stored, $1/GB downloaded). AdMob is revenue-share, not pay-to-use. sources: - https://support.google.com/googleplay/android-developer/answer/112622 - https://developers.google.com/maps/billing-and-pricing/pricing - https://firebase.google.com/pricing - https://developer.android.com/distribute/console/registration plans: - id: android-sdk-free name: Android SDK & Jetpack type: freemium description: >- Core Android framework, Jetpack libraries, NDK, Android Studio, ML Kit on-device, CameraX, Health Connect, Wear OS, Android for Cars, Android TV, Compose, and Gemini Nano on-device APIs are free. No license fee, no per-call cost. entries: - label: Framework / Jetpack / NDK SDKs description: All on-device Android SDKs and Android Studio tooling name: sdks type: flat metric: download limit: -1 timeFrame: usage geo: global unit: 1 price: '$0' userMultiplied: false elements: - name: Android Platform APIs - name: Jetpack (Compose, Lifecycle, Room, etc.) - name: Android NDK - name: ML Kit (on-device) - name: CameraX - name: Health Connect - name: Wear OS - name: Android for Cars - name: Android TV - name: Gemini Nano on-device - name: Credential Manager - name: Accessibility APIs - id: android-google-play-publishing name: Google Play Console & Distribution type: subscription description: >- Google Play developer account is required to publish apps. One-time registration fee, then service fees apply on paid apps, in-app purchases, and subscriptions sold through Google Play Billing. entries: - label: Google Play Developer Registration description: One-time fee to create a Google Play developer account name: play_developer_registration type: flat metric: account limit: 1 timeFrame: usage geo: global unit: 1 price: '$25' userMultiplied: false - label: Paid Apps & In-App Purchases (first $1M annual revenue) description: Service fee on the first $1M USD in earnings per developer per year name: play_service_fee_15 type: metered metric: transaction limit: -1 timeFrame: year geo: global unit: 1 price: '15%' userMultiplied: false - label: Paid Apps & In-App Purchases (above $1M annual revenue) description: Service fee on earnings above $1M USD per developer per year name: play_service_fee_30 type: metered metric: transaction limit: -1 timeFrame: year geo: global unit: 1 price: '30%' userMultiplied: false - label: Auto-Renewing Subscriptions description: Service fee on auto-renewing subscriptions, regardless of revenue tier name: play_subscription_fee type: metered metric: transaction limit: -1 timeFrame: usage geo: global unit: 1 price: '15%' userMultiplied: false - label: Alternative Billing (South Korea / India) description: Service-fee reduction when offering alternative billing in eligible regions name: play_alt_billing_discount type: metered metric: transaction limit: -1 timeFrame: usage geo: 'KR,IN' unit: 1 price: 'standard rate minus 4%' userMultiplied: false elements: - name: Google Play Console - name: Google Play Billing Library - name: Play Integrity API - name: Play Asset Delivery - name: Internal / Closed / Open Testing Tracks - name: Crashlytics + Vitals - id: android-maps-platform name: Google Maps Platform (Android SDK) type: usage-based description: >- Maps SDK for Android is free unlimited. Places, Geocoding, Directions, and Distance Matrix bill per 1,000 calls after a 10,000 monthly free event allowance. Pricing reflects the Maps Platform Essentials tier (May 2026). entries: - label: Maps SDK for Android description: Mobile map rendering on Android name: maps_sdk_android type: flat metric: request limit: -1 timeFrame: month geo: global unit: 1000 price: '$0 (unlimited)' userMultiplied: false - label: Places SDK Autocomplete description: Place autocomplete requests after 10K monthly free events name: places_autocomplete type: metered metric: request limit: -1 timeFrame: month geo: global unit: 1000 price: '$2.83' userMultiplied: false - label: Places Details description: Place details lookups after 10K monthly free events name: places_details type: metered metric: request limit: -1 timeFrame: month geo: global unit: 1000 price: '$5.00' userMultiplied: false - label: Geocoding description: Forward / reverse geocoding after 10K monthly free events name: geocoding type: metered metric: request limit: -1 timeFrame: month geo: global unit: 1000 price: '$5.00' userMultiplied: false - label: Directions (Routes Legacy) description: Routing requests after 10K monthly free events name: directions type: metered metric: request limit: -1 timeFrame: month geo: global unit: 1000 price: '$5.00' userMultiplied: false - label: Distance Matrix (Routes Legacy) description: Distance matrix requests after 10K monthly free events name: distance_matrix type: metered metric: request limit: -1 timeFrame: month geo: global unit: 1000 price: '$5.00' userMultiplied: false - label: Monthly Free Events description: Free events per product per month (Essentials tier) name: free_events type: quota metric: request limit: 10000 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false elements: - name: Maps SDK for Android - name: Places SDK for Android - name: Geocoding API - name: Directions / Routes API - name: Distance Matrix API - id: android-firebase-spark name: Firebase Spark (Free) type: freemium description: >- Firebase Spark plan with no payment method required. Hard caps on Firestore, Realtime Database, Cloud Storage, and Authentication. entries: - label: Cloud Firestore Storage description: Document storage cap on Spark name: firestore_storage_spark type: quota metric: gb limit: 1 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: Cloud Firestore Reads description: Document reads per day on Spark name: firestore_reads_spark type: quota metric: read limit: 50000 timeFrame: day geo: global unit: 1 price: '$0' userMultiplied: false - label: Cloud Firestore Writes description: Document writes per day on Spark name: firestore_writes_spark type: quota metric: write limit: 20000 timeFrame: day geo: global unit: 1 price: '$0' userMultiplied: false - label: Realtime Database Storage description: RTDB storage cap on Spark name: rtdb_storage_spark type: quota metric: gb limit: 1 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: Realtime Database Connections description: Simultaneous connections on Spark name: rtdb_connections_spark type: quota metric: connection limit: 100 timeFrame: usage geo: global unit: 1 price: '$0' userMultiplied: false - label: Cloud Storage description: Storage cap on Spark (legacy buckets) name: storage_cap_spark type: quota metric: gb limit: 5 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false - label: Authentication MAUs description: Monthly Active Users on Spark name: auth_mau_spark type: quota metric: user limit: 50000 timeFrame: month geo: global unit: 1 price: '$0' userMultiplied: false elements: - name: Cloud Firestore - name: Realtime Database - name: Cloud Storage - name: Firebase Authentication - name: Firebase Hosting - name: Cloud Messaging - id: android-firebase-blaze name: Firebase Blaze (Pay-As-You-Go) type: usage-based description: >- Firebase Blaze plan billed at the underlying Google Cloud rates. Eligible accounts may receive $300 in free credit on signup. entries: - label: Realtime Database Storage description: Per-GB stored beyond the 1 GiB Spark allowance name: rtdb_storage_blaze type: metered metric: gb limit: -1 timeFrame: month geo: global unit: 1 price: '$5' userMultiplied: false - label: Realtime Database Downloads description: Per-GB downloaded beyond the 10 GiB Spark allowance name: rtdb_download_blaze type: metered metric: gb limit: -1 timeFrame: month geo: global unit: 1 price: '$1' userMultiplied: false - label: Cloud Storage description: Per-GB stored beyond the 5 GB Spark allowance name: storage_blaze type: metered metric: gb limit: -1 timeFrame: month geo: global unit: 1 price: '$0.026' userMultiplied: false - label: Cloud Firestore (above Spark) description: Reads / writes / storage above Spark limits, billed at Google Cloud rates name: firestore_blaze type: metered metric: varies limit: -1 timeFrame: month geo: global unit: 1 price: 'see Google Cloud Firestore pricing' userMultiplied: false - label: Authentication (above Spark) description: MAUs above 50K Spark cap, billed at Identity Platform rates name: auth_blaze type: metered metric: user limit: -1 timeFrame: month geo: global unit: 1 price: 'see Google Cloud Identity Platform pricing' userMultiplied: false - label: New Account Credit description: One-time signup credit for eligible accounts name: blaze_signup_credit type: flat metric: USD limit: 300 timeFrame: usage geo: global unit: 1 price: '-$300' userMultiplied: false elements: - name: All Spark Features - name: Cloud Functions - name: Cloud Run Integration - name: Higher Quotas - name: BigQuery Export - id: android-admob-revenue-share name: Google AdMob (Revenue Share) type: usage-based description: >- AdMob is monetized for the developer (not paid by them). Google retains a small share of ad revenue; the rest is paid to the publisher per AdMob's published payment terms. entries: - label: Ad Revenue Share description: Revenue share retained by Google (rest paid to publisher); rate published in AdMob terms name: admob_revshare type: metered metric: impression limit: -1 timeFrame: usage geo: global unit: 1 price: 'see AdMob terms (revenue share)' userMultiplied: false elements: - name: Banner / Interstitial / Native / Rewarded Ad Formats - name: Mediation - name: Audience Reporting maintainers: - FN: Kin Lane email: kin@apievangelist.com x-canonical: generated: '2026-10-08' vocabulary: all/0-working/economics/plans-canonical.yml models: - free - metered - subscription units: - data - money - negotiated - object - request - seat - transaction plans: - name: Android SDK & Jetpack access: freemium model: subscription model_how: derived units: - object periods: - per-use - name: Google Play Console & Distribution access: other model: subscription model_how: stated units: - object - transaction periods: - per-use - year - name: Google Maps Platform (Android SDK) access: other model: metered model_how: stated units: - request periods: - month - name: Firebase Spark (Free) access: freemium model: free model_how: derived units: - data - object - other - seat periods: - day - month - per-use - name: Firebase Blaze (Pay-As-You-Go) access: other model: metered model_how: stated units: - data - money - negotiated - seat periods: - month - per-use - name: Google AdMob (Revenue Share) access: other model: metered model_how: stated units: - other periods: - per-use