Compare digital services by price per month
compare_digitalPrices of digital services for a buyer's country, cheapest first, from the providers' official price lists (each row has source_url and verified_on) converted to the buyer's currency by the Czech National Bank rate (fx_date). Categories: ai-chat (ChatGPT, Claude, Gemini, Copilot, Perplexity, Grok, Mistral Vibe, GitHub Copilot, Cursor, Jasper, DeepL… subscriptions), ai-api (price per 1M input and output tokens of the main models: OpenAI, Anthropic, Google, Mistral, xAI, DeepSeek, AI21, Amazon Nova), ai-creative (Midjourney, Runway, Kling, Leonardo, Canva, Firefly, ElevenLabs, Suno… per month, per picture or second of video when stated), streaming, music, vpn, cloud, office (Microsoft 365, Google Workspace, Zoho, Notion, Slack, Zoom… personal, family and business per user; business prices usually exclude VAT), creative (Adobe Creative Cloud, Canva, Figma, CapCut, DaVinci Resolve Studio… monthly, yearly or a one-time purchase: such a row has oneTimeLocal instead of a monthly price), passwords (1Password, Bitwarden, Dashlane). usage turns the list into a cost of that use: for ai-api messages_per_month (+ input_tokens and output_tokens per message, default 1 500 and 600) (+ cache_share 0–1 and batch) gives usage_cost a month, usage_breakdown (input, cached input, output; whether the long-prompt band or the batch discount applied) and break_even_messages (below it the API is cheaper than the provider's cheapest paid chat plan); for ai-creative images_per_month and video_seconds_per_month. A null price means the official page did not show one; it is never guessed. Each row carries data_location from the provider's own privacy policy (controller, storedIn country codes, inChina, authoritiesClause, quote, url, checked), null when we have not read it. Where the same plan is also sold inside the app (inAppPrices: the App Store's price for the buyer's country, with VAT, verifiedOn and sourceUrl), inApp compares a month on the web (the price list's price, plus the country's VAT when the list excludes it: web.vatAdded) with a month in the app, both in the buyer's currency: cheaper (web | app | same) and difference a month; inAppYearly does the same for yearly billing. Say both prices and which is cheaper; a plan without inApp has no store price read (never assume the app costs the same). Every row carries price, the one amount to show (the same as fordeal.ai shows): price.monthly and price.yearly (12 × monthly; yearlyWhenYearly = 12 × the month paid yearly) in the buyer currency with the buyer country VAT added where the price list excludes it (price.vat: included | by_law | added | excluded | unknown, price.vatRate), price.billing, price.channel (web) and price.rateDate; rows are ranked by price.monthly. promo (an open promotion) has monthlyLocal as converted and monthlyLocalGross on the same VAT basis as price: show the gross one, then price.monthly after it, both with the VAT word of price.vat. kind says who can buy the plan: regular (anyone), student (verified students or educators), business (companies and teams) or promo (only under the offer terms); never present a non-regular plan as the generic cheapest without saying who is eligible.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Only plans of this tier: free | basic | pro | max (AI subscriptions and picture/video tools), basic | standard | premium (streaming, music, VPN, cloud). Compare plans only within one tier. | |
| batch | No | Flat form of usage.batch (true / false). | |
| usage | No | How the buyer uses the service; omit for the plain price list. | |
| locale | No | BCP 47 locale for human-readable strings, e.g. "en", "cs", "sk". Defaults to the country's default locale. | |
| purpose | No | ai-chat: what the buyer needs it for. coding = plans whose page states an agent or coding tool, images / voice / video = plans whose page states that feature, writing = every plan. A feature the page does not state is 'not stated', not 'no'. | |
| category | Yes | ai-chat | ai-api | ai-creative | streaming | music | vpn | cloud | office | creative | passwords | |
| currency | No | Override the currency (e.g. EUR for a Czech buyer). | |
| cache_share | No | Flat form of usage.cache_share. | |
| input_tokens | No | Flat form of usage.input_tokens. | |
| output_tokens | No | Flat form of usage.output_tokens. | |
| images_per_month | No | Flat form of usage.images_per_month. | |
| deliver_to_country | No | The buyer's country; decides the currency and the local prices (CZ prices for CZ). Default: the first compared country. | |
| messages_per_month | No | Flat form of usage.messages_per_month (REST query strings). | |
| video_seconds_per_month | No | Flat form of usage.video_seconds_per_month. |