# UK MHRA Medicine & Healthcare Products Scraper (`lexis-solutions/mhra-uk-scraper`) Actor

MHRA UK Scraper automatically extracts MHRA (Medicines & Healthcare Products Regulatory Agency) product data and downloads SPC, PIL, and PAR PDFs with rich metadata (PL number, territory, doc type, dates) for scalable pharmaceutical compliance and regulatory analysis.

- **URL**: https://apify.com/lexis-solutions/mhra-uk-scraper.md
- **Developed by:** [Lexis Solutions](https://apify.com/lexis-solutions) (community)
- **Categories:** Automation, News, AI
- **Stats:** 6 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$29.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## MHRA UK Scraper

![banner](https://i.ibb.co/k23YTqYN/Screenshot-2026-01-04-at-1-10-18-AM.png)

***

The MHRA products website allows you to find:

- The leaflets which are provided with medicines
- The description of the medicinal product’s properties and how it can be used
- Scientific reports about marketing authorisations for medicines

MHRA UK Scraper is a scraper for the MHRA UK website that scrapes the substance index and downloads all the PDFs.

### Features

- **Rich Document Metadata**: Captures PL Numbers, territory, document types (SPC/PIL/PAR), creation dates, and more.
- **Automated PDF Download**: Saves documents directly to Apify Key-Value store with unique, sanitized keys.

### who is this actor for?

- **Pharmaceutical Experts**: For quick access to regulatory drug information and documentation.
- **Compliance & Legal Teams**: To monitor and aggregate product labels and patient information leaflets.
- **Data Analysts**: High-scale extraction of MHRA metadata without the overhead of browser automation.

***

### Input

```json
{
    "startUrls": [
        {
            "url": "https://products.mhra.gov.uk/"
        }
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

### output

```json
{
	"productName": "IBUPROFEN",
	"plNumber": "PL434610122",
	"activeSubstances": [
		"IBUPROFEN"
	],
	"fileSize": "219.12 KB",
	"docType": "PAR",
	"territory": "UK",
	"fileUrl": "https://mhraproducts4853.blob.core.windows.net/docs/c8a4c5818782db7d616d4babe78841a6a08c3055",
	"kvKey": "PL434610122_c8a4c5818782db7d616d4babe78841a6a08c3055",
	"searchScore": 1.769944,
	"highlights": [
		"Public Assessment Report  \n\n \n\nNational Procedure \n\n \n\n \n\n \n\n<em>Ibuprofen</em> 200 mg Tablets \n\n \n\n<em>Ibuprofen</em> \n\n \n\n \n\nPL 43461/0122 \n\n \n\n \n\nFlamingo Pharma UK Limited \n\n\n\nPAR <em>Ibuprofen</em> 200 mg Tablets    PL 43461/0122 \n\n \n\nInformed Consent, Regulation 56 2 \n\n \n  \n\n \n\nLAY SUMMARY \n \n\n<em>Ibuprofen</em> 200 mg Tablets \n\n<em>Ibuprofen</em> \n\n \n\nThis is a summary of the Public Assessment Report (PAR) for <em>Ibuprofen</em> 200 mg Tablets.",
		"How does <em>Ibuprofen</em> 200 mg Tablets work?",
		"How is <em>Ibuprofen</em> 200 mg Tablets used?",
		"The active substance is <em>ibuprofen</em>.",
		"<em>Ibuprofen</em> has analgesic, antipyretic and anti-inflammatory \n\nproperties <em>Ibuprofen</em> inhibits prostaglandin synthesis."
	],
	"created": "2025-04-03T15:25:48Z",
	"revision": "1",
	"title": "IBUPROFEN 200 MG TABLETS - PL 43461/0122",
	"fileName": "IBUPROFEN 200 MG TABLETS (PL 43461_0122).pdf",
	"facets": [
		"I",
		"I, IBUPROFEN",
		"I, IBUPROFEN, IBUPROFEN"
	],
	"keywords": ""
}
```

👀 p.s.

Got feedback or need an extension?

Lexis Solutions is a [certified Apify Partner](https://apify.com/partners/find). We can help you with custom solutions or data extraction projects.

Contact us over [Email](mailto:scraping@lexis.solutions) or [LinkedIn](https://www.linkedin.com/company/lexis-solutions)

### Support Our Work 💝

If you're happy with our work and scrapers, you're welcome to leave us a company review [here](https://apify.com/partners/find/lexis-solutions/review) and leave a review for the scrapers you're subscribed to. It will take you less than a minute but it will mean a lot to us!

# Actor input Schema

## `startUrls` (type: `array`):

URLs to start with.

## `maxItems` (type: `integer`):

Maximum number of items to scrape.

## `proxyConfiguration` (type: `object`):

Your proxy configuration from Apify

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://products.mhra.gov.uk/search/?search=Ibuprofen"
    }
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://products.mhra.gov.uk/search/?search=Ibuprofen"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lexis-solutions/mhra-uk-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://products.mhra.gov.uk/search/?search=Ibuprofen" }] }

# Run the Actor and wait for it to finish
run = client.actor("lexis-solutions/mhra-uk-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://products.mhra.gov.uk/search/?search=Ibuprofen"
    }
  ]
}' |
apify call lexis-solutions/mhra-uk-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lexis-solutions/mhra-uk-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MG0Xbjge0WXkrkoPX/builds/Wk3KLrdaqswN2PmmR/openapi.json
