Developer documentation
HartaFarmacii API
Authentication
Send the key in X-Api-Key or Authorization: Bearer. Don't put it in a URL, in public code or in apps distributed to users; keep it on your server.
curl -H "X-Api-Key: YOUR_KEY" \
"https://hartafarmacii.ro/api/comercial/v1/farmacii?city=Ia%C8%99i&limit=20"
Endpoints
| GET | Parameters and response |
|---|---|
/api/comercial/v1/farmacii | city, county, chain, service (vaccination / compounding), limit (1–200), after_id. Response: data and meta.has_more / next_after_id. |
/api/comercial/v1/produse | q (2–100 characters), optional substanta. At most 40 results in results. |
/api/comercial/v1/produse/{slug} | The product record in product and the visible offers in offers, with last_scraped, price, currency and online availability. |
/api/comercial/v1/gtin/{gtin} | GTIN of 8, 12, 13 or 14 digits → slug. |
/api/comercial/v1/produse/{slug}/istoric | days (1–90, default 30), limit (1–1,000), after_id. Observations in data, with price, chain and recording date; pagination in meta. |
/api/comercial/v1/cont | Plan, quota, usage and daily history. This endpoint does not use up the quota. |
Pagination
For pharmacies and history, continue with the meta.next_after_id value in the after_id parameter. Stop when has_more is false. Keep the same filters between requests. Place filters use the names with diacritics.
Quotas and errors
The quota is per UTC calendar month. Authenticated data requests use one unit, including those with wrong parameters or no results. Rejected authentications and the dashboard do not use the quota. Additional limit: 120 requests/minute/key.
X-RateLimit-Limit: the monthly quota;X-RateLimit-Remaining: requests left.X-RateLimit-Reset: the reset time, as a Unix timestamp.400: wrong parameters;401: invalid or inactive key;404: resource not found.429: limit reached; honourRetry-After.503: temporarily unavailable, not a revoked key.
Data quality and provenance
A missing value is null, not a zero price. Prices are indicative and carry their collection date. Check the offer at the source. A pharmacy's opening hours and services may need confirming by phone; the data is not medical advice.
Attribution: “HartaFarmacii.ro”, with a link. For OpenStreetMap data, the attribution and the obligations of the ODbL are kept. The subscription does not transfer exclusive rights over third-party sources or images.
API subscription terms
Starter: 19 €/month and 10,000 requests; Pro: 49 €/month and 100,000 requests; Business: 149 €/month and 1,000,000 requests. All plans include a 3-day trial. The card and payment terms are confirmed in Stripe.
The subscription renews monthly until cancelled. Cancelling from the portal stops the renewal at the end of the current period; during the trial you can cancel before the first charge. Plan changes and any payment differences are shown by Stripe before you confirm.
There is no automatic billing for requests above the quota. The service provides access to the available data and does not guarantee stock, exhaustive coverage, uninterrupted continuity or a fixed response time. The site's terms and privacy policy also apply; consumers' statutory rights remain applicable.
Payment, invoices and receipts are handled by Stripe through Link, which acts as the merchant of record: it calculates and collects the taxes that apply in your country (VAT etc.), and your bank statement shows LINK.COM*. The prices above exclude VAT. You manage the subscription from the dashboard or from your Link account. For the API key and the messages the subscription needs, we use the email given at checkout. We do not store card details. Support and subscription requests: contact@hartafarmacii.ro.