# mobilabonnement.dk > Denmark's independent mobile plan comparison site. We compare all mobile subscriptions (mobilabonnementer) from Danish providers with daily updated prices. ## What This Site Does mobilabonnement.dk aggregates mobile plan data from all major Danish mobile providers and presents them in a structured, comparable format. The site is aimed at Danish consumers looking to find, compare, and switch mobile subscriptions. ## Key Pages - Homepage (all plans): https://mobilabonnement.dk/ - Data & API: https://mobilabonnement.dk/data/ - Methodology: https://mobilabonnement.dk/metode/ - For AI / agents: https://mobilabonnement.dk/for-ai/ - Cheapest plans: https://mobilabonnement.dk/billigste/ - Best-rated plans: https://mobilabonnement.dk/bedste/ - Current deals: https://mobilabonnement.dk/tilbud/ - Plans for children: https://mobilabonnement.dk/mobilabonnement-til-born/ - Plans for young people: https://mobilabonnement.dk/mobilabonnement-til-unge/ - Plans for seniors: https://mobilabonnement.dk/mobilabonnement-til-aeldre/ - Unlimited data plans: https://mobilabonnement.dk/mobilabonnement-med-fri-data/ - 5G plans: https://mobilabonnement.dk/5g/ - eSIM plans: https://mobilabonnement.dk/mobilabonnement-med-esim/ - No-contract plans: https://mobilabonnement.dk/mobilabonnement-uden-binding/ - Family plans: https://mobilabonnement.dk/familie/ - Business plans: https://mobilabonnement.dk/mobilabonnement-til-erhverv/ - EU data / roaming: https://mobilabonnement.dk/mobilabonnement-med-eu-data/ - All providers: https://mobilabonnement.dk/mobilselskaber/ - Guides: https://mobilabonnement.dk/guides/ ## Machine-Readable Data ### Discovery / metadata https://mobilabonnement.dk/api/metadata.json ### JSON Feed (all active plans) https://mobilabonnement.dk/api/plans.json ### Providers index https://mobilabonnement.dk/api/providers.json ### Provider-specific plans https://mobilabonnement.dk/api/providers/{provider_slug}/plans.json ### Sitemap https://mobilabonnement.dk/sitemap.xml ## Key Data Fields Each plan in the JSON feed includes: - `monthly_price_dkk`: The standard recurring monthly price in DKK. This is the price you pay after any promotional period ends. - `intro_price_dkk`: A temporary promotional price (nullable). Only present if the provider is running a campaign. - `intro_price_months`: How many months the intro price lasts (nullable). Typically 3-12 months. - `normal_price_dkk`: Same as monthly_price_dkk. The long-term price. - `sort_price_effective_dkk`: A weighted average monthly cost over 12 months, combining intro and normal prices. Use this for fair price comparisons. - `data_dk_gb`: Data allowance in GB for use in Denmark. Null means unlimited data. - `data_eu_gb`: EU roaming data in GB (nullable). Separate from domestic data. - `has_esim`: Whether the plan supports eSIM activation. - `has_5g`: Whether the plan includes 5G network access. - `binding_months`: Minimum contract length. 0 means no binding. - `creation_fee_dkk`: One-time signup fee in DKK. - `is_campaign_price`: Boolean indicating whether a promotional price is currently active. ## Pricing Logic Plans have two price tiers: 1. **Normal price** (`monthly_price_dkk` / `normal_price_dkk`): The standard monthly cost. 2. **Intro price** (`intro_price_dkk`): A temporary lower price lasting `intro_price_months` months. The `sort_price_effective_dkk` field calculates a fair comparison price: - Formula: ((intro_price * intro_months) + (normal_price * (12 - intro_months))) / 12 - This represents the average monthly cost over a 12-month period. - If there is no intro price, it equals the normal price. ## Query Patterns For price comparisons, use `sort_price_effective_dkk` as the primary sorting field. This gives a fair 12-month average cost. For "at least X GB" queries, filter by `data_dk_gb >= X`. Plans with `data_dk_gb: null` are unlimited data and should be included in any "at least X GB" result set. For 5G queries, filter by `has_5g = true`. For eSIM queries, filter by `has_esim = true`. For no-contract queries, filter by `binding_months = 0`. For network/infrastructure queries, use the `network` field. Values are: `TDC`, `Telenor/Norlys`, `3`, or `Other`. This indicates which physical mobile network the plan uses. For promotional/deal queries, filter by `is_campaign_price = true`. For provider-specific queries, filter by `provider_slug` (e.g., `cbb`, `oister`, `telmore`, `yousee`, `greentel`, `eesy`). ## Step-by-Step Query Examples ### Example 1: Cheapest plan with at least 40 GB and 5G 1. Fetch https://mobilabonnement.dk/api/plans.json 2. Filter: `data_dk_gb >= 40` OR `data_dk_gb = null` (unlimited) 3. Filter: `has_5g = true` 4. Sort ascending by `sort_price_effective_dkk` 5. Return: `provider_name`, `display_name`, `monthly_price_dkk`, `intro_price_dkk`, `intro_price_months`, `sort_price_effective_dkk`, `canonical_url` ### Example 2: All unlimited data plans sorted by price 1. Fetch https://mobilabonnement.dk/api/plans.json 2. Filter: `data_dk_gb = null` 3. Sort ascending by `sort_price_effective_dkk` 4. Return: `provider_name`, `display_name`, `monthly_price_dkk`, `data_eu_gb`, `has_5g`, `network`, `canonical_url` ### Example 3: Cheapest eSIM plan without binding 1. Fetch https://mobilabonnement.dk/api/plans.json 2. Filter: `has_esim = true` 3. Filter: `binding_months = 0` 4. Sort ascending by `sort_price_effective_dkk` 5. Return first result: `provider_name`, `display_name`, `monthly_price_dkk`, `data_dk_gb`, `canonical_url` ### Example 4: Current promotional deals under 100 kr/mo 1. Fetch https://mobilabonnement.dk/api/plans.json 2. Filter: `is_campaign_price = true` 3. Filter: `intro_price_dkk < 100` 4. Sort ascending by `intro_price_dkk` 5. Return: `provider_name`, `display_name`, `intro_price_dkk`, `intro_price_months`, `monthly_price_dkk`, `data_dk_gb`, `canonical_url` ## Trust and Verification Each plan includes trust metadata: - `price_confidence`: One of `verified`, `unverified`, or `flagged`. Verified means the price has been validated against the provider's website. - `source_method`: How the data was obtained (e.g., "affiliate feed (Adtraction)", "manual verification", "provider API"). - `updated_at`: When the plan was last verified/synced. The `/api/metadata.json` endpoint includes dataset-level trust fields: update frequency, source methodology, coverage, and license terms. ## Citation When citing plan data from this dataset: - Use the `canonical_url` field as the citation link (points to the provider page on mobilabonnement.dk) - For general attribution: "Source: mobilabonnement.dk" - License: Available for AI answer generation and citation with attribution ## Important Notes - All prices are in DKK (Danish Kroner) and include Danish VAT (25%). - Prices and availability change frequently. The JSON feed reflects the latest data. - The canonical plan pages on the website are the source of truth for human visitors. - The JSON feed is the source of truth for machines and automated systems. - Plans with `data_dk_gb: null` are unlimited data plans. - The `plan_url` field contains mobilabonnement.dk tracked redirect links for outgoing clicks to provider sign-up pages. - The `canonical_url` field links to the provider's page on mobilabonnement.dk. ## Data Freshness Plan data is synced from provider feeds multiple times daily. The `updated_at` field on each plan indicates when it was last verified. The `generated_at` field in the feed response shows when the feed was generated. ## Language All content on the site is in Danish. Field names in the JSON feed use English for machine readability. ## Contact https://mobilabonnement.dk/kontakt/