SummarySweden offers the most convenient bulk download in European medicine pricing: one constant address, no login, no form, no session, backed by the national open data law. A single request retrieves the full dataset. Two things temper that. The route is undocumented, and the file covers only the part of the market that falls under the high cost protection scheme, which leaves the non-reimbursed prescription range and the whole over the counter segment outside.
The dental and pharmaceutical benefits agency publishes the prices it has decided on.
| Property | Value |
|---|---|
| Price levels | Pharmacy purchase price and pharmacy retail price, each also per smallest unit |
| Currency | Swedish kronor, decimal with a comma separator |
| File generation | Daily |
| Price periods | Monthly, on a three month application cycle |
| Format | Spreadsheet, served with a misleading content type |
| Coverage | Only what falls under the high cost protection scheme |
| Licence | Free under the national open data law |
In our retrieval the medicines file was 1,274,120 bytes with 14,599 pack rows, and the consumables file 274,823 bytes with 4,293 items.
Most descriptions say Sweden updates monthly. That is half right and it is the wrong number to build on.
Price changes take effect in monthly periods, following an application cycle of three months: application month, decision month, start of the price period. But the file itself is regenerated daily, and the agency states as much on its open data page.
The operational rule is therefore to fetch daily even though the content changes materially once a month. A pipeline that fetches monthly will miss corrections made within a period, and those corrections are exactly the kind of change that is invisible in a comparison against a stale copy.
The database contains what the agency has decided on and what falls within the high cost protection scheme. Non-reimbursed prescription products and the entire over the counter range are absent.
The size of that gap is easy to underestimate. Sweden's file holds 14,599 pack rows. Denmark, with roughly a fifth of the population, publishes 11,589 pack records. The difference is not a difference in market size, it is a difference in scope.
For full national coverage the route is the national product and article register, obtainable over SFTP on an informal application, with no contract required. That is an unusually light procedure by European standards and it is worth starting early, because the price file alone will not support a claim of national coverage.
The bulk file is served with a content type that indicates an old binary spreadsheet format, while the content is a modern spreadsheet format. A parser that selects its reader from the content type will reach for the wrong one and fail on a file that is perfectly valid.
This is the kind of detail that costs an afternoon and never appears in any documentation. Select the reader from the file signature, not from the header.
Alongside the pack level purchase and retail price, the Swedish file carries both figures per smallest unit. That is unusual and more useful than it sounds.
Cross-pack comparison is one of the standing problems in pharmaceutical price work: a 30 tablet pack and a 100 tablet pack of the same product are not comparable at pack level, and deriving a per unit figure requires a reliable pack size, which many European sources do not provide in structured form. Sweden does the division itself, in the same row, using its own pack data.
For a European dataset that gives two benefits. It supplies a per unit view for Sweden without any parsing, and it provides a check on your own per unit calculations elsewhere: if your derived unit price for a comparable product differs wildly from the published Swedish logic, the pack parsing in the other country is the first thing to inspect.
The medicines file and the consumables file are separate downloads with separate scopes. Mixing them produces an average across two regulatory regimes and two very different product populations.
Keep them apart at import, with the source file recorded per row. It costs one column and it prevents the most common reporting error in Swedish data, which is a national figure that quietly includes devices alongside medicines.
The bulk address is stable and works with a single request. It is also not named in any official documentation. The agency's open data page describes only that the information can be downloaded as a spreadsheet.
The address is therefore an implementation detail of the agency's own front end. It can change without notice, and the correct posture is to monitor it rather than to trust it: check the status code and the row count on every run, and alert on a file that is suddenly much smaller rather than absent, because a partial file is the failure mode that silently corrupts a dataset.
A second bulk file is worth knowing about: the monthly product of the period list, which names the substitution product for each period. In our check it carried 7,985 data rows for a single month. For anyone modelling Swedish substitution rules rather than price levels, that is the operative file.
Sweden publishes the pharmacy purchase price. The step down to the manufacturer level uses a margin of 2.8 percent.
As with Denmark and Finland, that figure comes from an Austrian price commission regulation used as a substitute assumption, in the version in force from 1 February 2025, where the percentages are expressly related to the pharmacy purchase price.
Sweden is the best illustration of why such a factor must be versioned rather than hard coded: in the 2018 version of the same regulation the Swedish rate was 2.7 percent. It changed. A stored Swedish manufacturer price without a rule version and an effective date cannot be reproduced, and a time series built from it will contain a step that looks like a market movement.
Fast implementation. One request, no authentication, no HTML parsing, a licence that permits commercial use. Nothing else in our review is this quick to stand up.
Both trade levels in one row. Purchase and retail price arrive together, and both are also given per smallest unit, which makes cross-pack comparison straightforward without any parsing.
Substitution analysis, through the period list, which is a distinct question from price level and better documented than in most markets.
What it is not good for, without the additional register, is any statement about the Swedish market as a whole.
Sweden is the fastest of the four Nordic countries to integrate and the narrowest in scope. Denmark charges a small fee and delivers a legally fixed rhythm with full pharmacy coverage. Finland offers an open interface, a ten year archive and the best pack data model. Norway publishes ceilings but hands you a GTIN.
A Nordic price view built from all four therefore has one shared caveat and four different ones. The shared caveat is that none of them publishes a manufacturer price. The individual ones are scope in Sweden, encoding in Denmark, article number handling in Finland and the ceiling nature of the Norwegian figures.
Sweden is the easiest country in Europe to fetch and one of the easiest to misrepresent. A single request gives you both trade levels, per pack and per unit, under a free licence and with a daily refresh. The two caveats belong in the same sentence as the data: the route is undocumented and can disappear, and the file describes the reimbursed core rather than the Swedish market. Add the national register, monitor the route, and version the conversion factor.
Related reading: European Drug Pricing Database: how cross-border prices work and Pharma pricing Germany: how the system works, plus pharmacy purchase price and Denmark medicine prices.
pharmazie.com is the consolidated pharmaceutical data platform by DACON Datenbank Consulting GmbH that bundles 25+ specialist databases into a single search, exclusively for healthcare professionals. Price coverage focuses on the DACH region and a number of further EU countries, with more countries following in the coming months.
In the bulk file of the dental and pharmaceutical benefits agency, retrievable with a single request without login, free under the national open data law.
No. It contains what the agency has decided on within the high cost protection scheme. For national coverage the product and article register is needed, obtainable over SFTP on an informal application with no contract.
The pharmacy purchase price and the pharmacy retail price, each also expressed per smallest unit, which makes cross-pack comparison possible without parsing a pack size.
Because it is served with a content type indicating an old binary spreadsheet format while the content is a modern spreadsheet. Select the reader from the file signature rather than the header.
The file is regenerated daily. Price changes themselves take effect in monthly periods, following a three month application cycle.
By removing a margin of 2.8 percent from the pharmacy purchase price. The factor comes from an Austrian price commission regulation and was 2.7 percent in the 2018 version, so store it with a version and date and label the result an estimate.