Boots APIboots.com ↗
Search the Boots medicines and treatments catalog via API. Returns pricing, brand, availability, pack size, active ingredients, and review scores for each product.
What is the Boots API?
The Boots.com Medicines API provides access to the Boots health and pharmacy catalog through a single endpoint, search_medicines, which returns up to dozens of fields per product — including price, brand, pack size, active ingredients, availability status, and review scores. Run a full-text query against the medicines and treatments section of boots.com and get structured, paginated results suitable for price tracking, formulary tools, or consumer health applications.
curl -X POST 'https://api.parse.bot/scraper/eda83854-63f1-4d9d-8173-62bfd25e187b/search_medicines' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1",
"query": "paracetamol",
"sort_by": "mostRelevant",
"page_size": "24"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace boots-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Boots Medicines API — search medicines by name, explore results."""
from parse_apis.boots_com_api import Boots, SortBy, ParseError
client = Boots()
# Search for paracetamol products, limit to 5 results
for med in client.medicines.search(query="paracetamol", sort_by=SortBy.MOST_RELEVANT, limit=5):
print(f"{med.name} | {med.brand} | {med.price_text} | in stock: {med.in_stock} | pack: {med.pack_size}")
# Get cheapest ibuprofen by price
cheapest = client.medicines.search(query="ibuprofen", sort_by=SortBy.PRICE_LOW_TO_HIGH, limit=1).first()
if cheapest:
print(f"Cheapest ibuprofen: {cheapest.name}, {cheapest.price_text}, ingredients: {cheapest.attributes.active_ingredient}")
# Handle errors gracefully
try:
result = client.medicines.search(query="cough syrup", sort_by=SortBy.NEWEST, limit=1).first()
if result:
print(f"Found: {result.name} by {result.brand}, {result.price_text}")
except ParseError as exc:
print(f"Error searching: {exc}")
print("exercised: medicines.search (multiple queries, sort orders, limit, first, error handling)")
Full-text search over the Boots medicines and treatments catalog. Returns paginated product results matching the query, each with pricing, brand, availability status, pack size, active ingredients, and review scores. Results are auto-iterated across pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| queryrequired | string | Medicine or treatment name to search for (e.g. paracetamol, ibuprofen, cough syrup). |
| sort_by | string | Sort order for results. |
| page_size | integer | Number of results per page. |
{
"type": "object",
"fields": {
"page": "integer",
"query": "string",
"total": "integer",
"results": "array of medicine product objects",
"page_size": "integer"
},
"sample": {
"data": {
"page": 1,
"query": "paracetamol",
"total": 97,
"results": [
{
"name": "Boots Paracetamol 500mg Tablets 16 Tablets",
"brand": "Boots",
"price": 0.49,
"currency": "GBP",
"in_stock": true,
"image_url": "https://boots.scene7.com/is/image/Boots/10276369?op_sharpen=1",
"pack_size": "16UNI",
"attributes": {
"format": "tablet",
"condition": "pain",
"suitable_for": [
"adults",
"kids"
],
"active_ingredient": "paracetamol",
"pharmacy_medicine": "no"
},
"price_text": "£0.49",
"product_id": "10276369",
"product_url": "https://www.boots.com/boots-paracetamol-500mg-caplets-16s-10276369",
"review_count": 73,
"regular_price": 0.49,
"price_per_unit": "£0.03 per 1UNI",
"review_average": 4.58,
"regular_price_text": "£0.49"
}
],
"page_size": 5
},
"status": "success"
}
}About the Boots API
What the API covers
The Boots.com Medicines API exposes the health and pharmacy medicines catalog at boots.com through one endpoint: search_medicines. Submit any medicine or treatment name — paracetamol, ibuprofen, antihistamine, cough syrup — and receive structured product records from the Boots OTC catalog. Each call returns a results array alongside metadata fields: query, total, page, and page_size.
Response fields per product
Each object in the results array carries retail price, brand name, availability status, pack size, active ingredients, and customer review scores. This makes the endpoint useful for building price-monitoring pipelines, ingredient-lookup tools, or availability dashboards without any additional parsing. The total count lets you determine result depth before committing to full pagination.
Querying and sorting
search_medicines accepts a required query string and three optional parameters: page (integer, 1-based), page_size (integer), and sort_by (string) to control the order of returned products. The endpoint auto-iterates across pages, so you can walk through a full result set for broad queries — useful when cataloging all products under a therapeutic category like "antihistamine" or "pain relief".
Coverage and scope
The API reflects the Boots medicines and treatments catalog as listed on boots.com. It does not cover other Boots product verticals such as skincare, vitamins, or beauty. Prescription-only medicines that sit behind a pharmacy or login flow are also outside the current scope. For teams that need adjacent data — such as product detail pages, promotions, or loyalty card pricing — the API can be forked on Parse and extended with additional endpoints.
The Boots API is a managed, monitored endpoint for boots.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when boots.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official boots.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track retail prices for OTC medicines like ibuprofen and paracetamol across time
- Check stock availability for specific treatments before directing patients or customers
- Build a formulary or drug lookup tool using active ingredient and brand data
- Compare pack sizes and unit pricing across equivalent medicines
- Aggregate review scores for OTC products to support purchasing recommendations
- Monitor catalog breadth for a given therapeutic category by querying condition-related terms
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.