Kronans Apotek Scraper — Swedish Pharmacy Products & Prices avatar

Kronans Apotek Scraper — Swedish Pharmacy Products & Prices

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
Kronans Apotek Scraper — Swedish Pharmacy Products & Prices

Kronans Apotek Scraper — Swedish Pharmacy Products & Prices

Scrape products, prices, and details from Kronans Apotek — Sweden's #3 pharmacy chain. Covers the full product catalogue via category and full-store listing crawls.

Pricing

from $1.20 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a month ago

Last modified

Categories

Share

Kronans Apotek Scraper

Scrape product data from kronansapotek.se, Sweden's #3 pharmacy chain by store count. Extract prices, EAN/GTIN barcodes, brands, categories, and availability for medicines, supplements, skincare, and wellness products across the full online catalogue.

Sibling actors in the same vertical: apoteket-scraper, apotekhjartat-scraper, apotek1-scraper, apotea-scraper, apohem-scraper — together these cover Sweden's and Norway's major online pharmacies.

Input

FieldTypeRequiredDescription
startUrlsArrayNoSpecific Kronans Apotek product page URLs to scrape directly, e.g. https://www.kronansapotek.se/Alvedon/p/097610/. When set, only these URLs are scraped (no filtering).
maxResultsIntegerNoMax products to return from the default full-catalogue crawl (default: 100). Ignored when startUrls is set.
proxyConfigurationObjectNoProxy settings. Kronans Apotek has no anti-bot protection, so the free automatic Apify proxy pool is enough.

If you provide nothing, the actor crawls the full catalogue by default (see below).

How the full-catalogue crawl works

Kronans Apotek is a static site (Gatsby, hosted on S3 + CloudFront). The category and "all products" listing pages you see in a browser paginate via ?page=N, but that pagination is client-side JavaScript only — a plain HTTP request to ?page=2 returns byte-identical content to ?page=1 (verified live 2026-09-11). So instead of paginating listing pages, this actor reads the site's own XML sitemap (/_gatsby/sitemap-index.xml), which lists every product detail page directly — over 33,500 URLs across 8 sitemap files — and fetches product data from there.

About 45% of the catalogue is prescription-only medicines, which Swedish pharmacy sites don't publicly categorize or describe (a regulatory restriction on marketing prescription drugs, not a scraping gap — verified against the source's own JSON-LD, which omits description and any real category breadcrumb for these pages). The default crawl skips these uncategorized listings, the same way sibling actor apoteket-scraper excludes prescription items at its search-API level. Pass a specific product URL via startUrls if you need a prescription item's price/EAN regardless.

Output

FieldTypeExample
nameString"Alvedon 500 mg Paracetamol, Filmdragerad tablett, 20 styck"
brandString"Alvedon"
priceNumber34
currencyString"SEK"
skuString"097610"
eanString"07046260976108"
inStockBoolean or nulltrue (null when the source doesn't state availability — never guessed)
imageUrlStringProduct image
itemDescriptionStringProduct description, when published
categoryStringBreadcrumb category path, e.g. "Förkylning och feber > Feber"
strengthStringParsed dosage, e.g. "500 mg", when present in the name
formStringParsed pharmaceutical form, e.g. "Filmdragerad tablett", when present
packageTextStringParsed pack size, e.g. "20 styck", when present
urlStringProduct page URL
scrapedAtStringISO 8601 timestamp
{
"name": "Alvedon 500 mg Paracetamol, Filmdragerad tablett, 20 styck",
"brand": "Alvedon",
"price": 34,
"currency": "SEK",
"url": "https://www.kronansapotek.se/Alvedon/p/097610/",
"scrapedAt": "2026-09-11T14:14:24.586Z",
"sku": "097610",
"ean": "07046260976108",
"inStock": true,
"imageUrl": "https://www.kronansapotek.se/k2/images/097610/large/0.jpg",
"itemDescription": "Alvedon innehåller paracetamol som är smärtlindrande och febernedsättande.",
"category": "Förkylning och feber > Feber",
"strength": "500 mg",
"form": "Filmdragerad tablett",
"packageText": "20 styck"
}

Technical notes

  • Product data comes from schema.org Product JSON-LD on each detail page — no headless browser needed, plain HTTP GET + parsing.
  • Prices are in SEK (Swedish kronor), read directly from the source's own numeric offers.price field.
  • inStock is a nullable 3-state field: true/false when the source states availability, null when it doesn't. It is never coerced to false just because availability is unstated.
  • No anti-bot protection was found on kronansapotek.se (verified live 2026-09-11), so the default proxy setting is the free automatic Apify proxy pool — no residential proxy required.

Cost

Using CheerioCrawler (HTTP-only, no browser): $0.005 start fee plus $0.002 per result. 100 products costs about $0.21; 1,000 about $2.01. A run's usage cost only settles after the run reports SUCCEEDED — reading the dataset mid-run will undercount the eventual charge.

How to scrape Kronans Apotek data

  1. Go to this actor's page on the Apify Store.
  2. Click Try for free to open it in Apify Console.
  3. Leave the input empty for a full-catalogue crawl, set maxResults, or paste specific product URLs into startUrls.
  4. Click Start and wait for the run to finish.
  5. Download your data in JSON, CSV, Excel, or connect it to your workflow via the Apify API.

You can also schedule regular runs, set up webhooks for real-time notifications, or integrate the results directly into your application using the Apify API.

Tips and tricks

  • Start small: test with maxResults: 10 before running large scrapes.
  • Direct product lookups: use startUrls when you already know the exact product page(s) you want, including prescription items the default crawl skips.
  • Schedule runs: set up recurring runs to keep pricing data fresh automatically.
  • No login required: this actor scrapes publicly available data without needing an account.

Limitations

  • Data is scraped from the public website and may change without notice.
  • Prescription-only medicines are excluded from the default full-catalogue crawl (see "How the full-catalogue crawl works" above) — use startUrls to fetch one directly.
  • Very large scraping jobs (thousands of products) take longer since each product requires its own detail-page request.
  • Respect the website's terms of service and use responsibly.

Features

  • No login required — scrapes publicly available data from Kronans Apotek without needing credentials or cookies.
  • Structured output — results are returned as clean JSON objects, ready for processing.
  • Full-catalogue discovery — reads the site's own XML sitemap to reliably enumerate products, working around client-side-only listing pagination.
  • Direct product lookups — pass exact product URLs via startUrls for targeted scraping.
  • Proxy support — configurable proxy settings, though none is required by default.
  • API access — integrate results into your workflow using the Apify API or webhooks.

FAQ

Is it legal to scrape Kronans Apotek? Web scraping of publicly available data is generally permitted. This actor only accesses information that is publicly visible to any website visitor. Always review the website's terms of service before scraping.

Why don't all products have a category or description? Kronans Apotek doesn't publish a public category breadcrumb or marketing description for prescription-only medicines (a regulatory restriction on drug marketing, not a data gap in this actor). The default crawl skips these; pass the product URL via startUrls if you need its price/EAN anyway.

How often should I run this scraper? For price monitoring or competitive intelligence, daily or weekly runs are common. Set up a schedule in Apify Console to automate this.

Can I export the data to Google Sheets or Excel? Yes. After each run, you can download results in CSV, JSON, or Excel format directly from Apify Console. You can also connect results to Google Sheets using Apify integrations.

What if the scraper stops working? Websites change their structure occasionally. If you notice issues, please open an issue on the actor's page. We actively maintain this scraper and fix issues promptly.