ECHA Scraper β€” EU Chemicals Database & Substance Info avatar

ECHA Scraper β€” EU Chemicals Database & Substance Info

Deprecated

Pricing

Pay per usage

Go to Apify Store
ECHA Scraper β€” EU Chemicals Database & Substance Info

ECHA Scraper β€” EU Chemicals Database & Substance Info

Deprecated

Scrape chemical substance data, registrations, CAS numbers, hazard classifications, and regulatory info from ECHA (European Chemicals Agency) at echa.europa.eu.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

ECHA Scraper β€” Extract Chemical Substance Data from the EU Chemicals Database

Automatically extract chemical substance information, CAS numbers, EC numbers, hazard classifications, and REACH registration data from the European Chemicals Agency (ECHA). The data comes from ECHA CHEM (chem.echa.europa.eu), ECHA's current public substance database.

What is ECHA Scraper?

The ECHA database holds detailed regulatory information on over 23,000 registered chemical substances in the European market. Manually searching through it is slow, frustrating, and impractical if you need data on more than a handful of substances.

ECHA Scraper gives you structured, machine-readable data from ECHA in minutes instead of days. Here is how teams use it:

  • Chemical compliance officers monitor newly registered substances and track hazard classification changes across their product portfolio
  • REACH consultants pull registration data for hundreds of substances at once to prepare dossier assessments
  • Supply chain managers verify that raw materials and intermediates have valid REACH registrations before signing procurement contracts
  • Environmental researchers build datasets of hazardous substances filtered by molecular formula, CAS number, or classification for academic studies
  • Product safety teams cross-reference CAS numbers against their ingredient lists to flag substances requiring Safety Data Sheet updates

What data does ECHA Scraper extract?

Every scraped substance includes the following fields:

  • πŸ§ͺ name β€” Official IUPAC or common substance name (e.g., "Benzene", "Bisphenol A")
  • πŸ”’ casNumber β€” CAS Registry Number for unambiguous identification (e.g., "71-43-2")
  • πŸ“‹ ecNumber β€” European Community number from the EINECS/ELINCS inventory (e.g., "200-753-7")
  • 🧬 molecularFormula β€” Chemical formula (e.g., "C6H6")
  • βš–οΈ registrationType β€” "REACH registered" when the substance has a REACH registration, empty otherwise
  • ☒️ hazardClassification β€” whether the substance has a harmonised classification (CLP Annex VI) and/or notified classifications (C&L Inventory)
  • 🏷️ substanceType β€” ECHA's type and category, e.g. "substance, chemical"
  • πŸ“ description β€” ECHA's description of the substance, or its IUPAC name when ECHA has none
  • πŸ”— url β€” the substance's page on ECHA CHEM
  • πŸ†” echaId β€” ECHA substance id (e.g. "100.000.685")
  • πŸ”’ casNumbers, indexNumbers β€” every CAS and CLP index number ECHA links to the substance
  • πŸ“¦ tonnageBand β€” REACH tonnage band, e.g. "1 000 000 - 10 000 000 tonnes per year"
  • βš—οΈ smiles, inchi β€” structure identifiers
  • πŸ“š listParticipation, regulatoryProcesses β€” ECHA lists and regulatory processes the substance appears in
  • πŸ” searchQuery β€” the search that returned the row
  • πŸ• scrapedAt β€” ISO timestamp of when the data was extracted

How to scrape ECHA

Configure your scrape with these input parameters:

ParameterTypeDescription
Start URLsArrayECHA URLs. An old echa.europa.eu infocard URL or an ECHA CHEM substance URL returns that substance; a search URL runs its search.
Search QueryStringSubstance name, CAS number, EC number or ECHA id, 2 to 40 characters. Examples: benzene, 71-43-2, 200-753-7, 100.000.685.
Max ResultsIntegerMaximum substances to return (1-10,000). Default: 100.
Proxy ConfigurationObjectUsually not needed. The actor connects to ECHA CHEM directly and only uses this proxy when a direct request is refused.

Tips for best results

  • Search by CAS number for precise lookups β€” enter 71-43-2 to find exactly Benzene
  • Use partial names to cast a wider net β€” searching phthalate returns all phthalate-related substances
  • Paste substance URLs into Start URLs when you need specific substances from a known list
  • Start with a low Max Results (10-20) to preview the data format before running large extractions
  • One search returns at most 10,000 substances, which is ECHA CHEM's own limit. Split broad searches into narrower ones

Output

Each substance is returned as a JSON object. Here is a realistic example:

[
{
"name": "Benzene",
"casNumber": "71-43-2",
"ecNumber": "200-753-7",
"registrationType": "REACH registered",
"hazardClassification": "Harmonised classification (CLP Annex VI); Notified classification (C&L Inventory)",
"substanceType": "substance, chemical",
"molecularFormula": "C6H6",
"description": "benzene",
"url": "https://chem.echa.europa.eu/100.000.685/overview",
"echaId": "100.000.685",
"casNumbers": [
"-",
"174973-66-1",
"71-43-2",
"1076-43-3",
"1173023-23-8",
"54682-86-9",
"1053658-43-7"
],
"indexNumbers": [
"601-020-00-8"
],
"tonnageBand": "100 000 - 1 000 000 tonnes per year",
"smiles": "C1=CC=CC=C1",
"inchi": "InChI=1S/C6H6/c1-2-4-6-5-3-1/h1-6H",
"listParticipation": [
"REACH REGISTERED"
],
"regulatoryProcesses": [
"EU-PREG_WORKER-ANX_I_II",
"CNL_HARMONISED",
"EU-PRESSURE_EQUIPMENT-ART_13_1_a",
"EU-INLAND_TRANSP_DANGER_GOODS-ADR_CHAP_3_2_TAB_A",
"..."
],
"searchQuery": "benzene",
"scrapedAt": "2026-09-25T06:30:00.000Z"
},
{
"name": "4-(N,N-dibutylamino)-2-hydroxy-2'-carboxybenzophenone",
"casNumber": "54574-82-2",
"ecNumber": "410-410-5",
"registrationType": "REACH registered",
"hazardClassification": "Harmonised classification (CLP Annex VI); Notified classification (C&L Inventory)",
"substanceType": "substance, chemical",
"molecularFormula": "C22H27NO4",
"description": "BBB ACID; DB2B ACID; DBMAP-KETOACID; DBMAP-KETOSΓ„URE; DIBUTYL 2B ACID",
"url": "https://chem.echa.europa.eu/100.101.001/overview",
"echaId": "100.101.001",
"casNumbers": [
"-",
"142589-90-0",
"54574-82-2"
],
"indexNumbers": [
"606-052-00-6"
],
"tonnageBand": "ceasedManufacture",
"smiles": "CCCCN(CCCC)C1=CC(O)=C(C=C1)C(=O)C1=CC=CC=C1C(O)=O",
"inchi": "InChI=1S/C22H27NO4/c1-3-5-13-23(14-6-4-2)16-11-12-19(20(24)15-16)21(25)17-9-7-8-10-18(17)22(26)27/h7-12,15,24H,3-6,13-14H2,1-2H3,(H,26,27)",
"listParticipation": [
"REACH REGISTERED"
],
"regulatoryProcesses": [
"CNL_NOTIFIED",
"EU-CONSTRUCTION_PROD-ART_6_5",
"EU-CONSTRUCTION_PROD-ANX_I_3",
"REG_PRE_REGISTERED_2008",
"..."
],
"searchQuery": "acid",
"scrapedAt": "2026-09-25T06:30:00.000Z"
}
]

Results can be downloaded as JSON, CSV, Excel, XML, or accessed via the Apify API.

How much does it cost?

ECHA Scraper runs on the Apify platform. You only pay for the compute resources consumed during the scrape.

Scrape sizeEstimated timeEstimated cost
10 substancesa few secondsunder $0.01
100 substances~5 secondsunder $0.01
1,000 substances~30 seconds~$0.01
10,000 substances~5 minutes~$0.05

Apify's free tier includes $5 of monthly compute, enough for hundreds of substance lookups at no cost.

Can I integrate?

Yes. Connect ECHA Scraper to your existing tools without writing code:

  • Google Sheets β€” Automatically push new substance data into a spreadsheet for your compliance team
  • Slack β€” Get notified in a channel whenever new SVHC substances appear in your search results
  • Zapier β€” Trigger downstream workflows when new hazardous substances are detected
  • Make (Integromat) β€” Build complex compliance monitoring pipelines with conditional logic
  • Webhooks β€” Send results to any HTTP endpoint for custom processing

Set up integrations directly from the Apify console under the "Integrations" tab of your Actor run.

Can I use it as an API?

Absolutely. Call ECHA Scraper programmatically from any language. Here are examples using the Apify client libraries:

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("studio-amba/echa-scraper").call(run_input={
"searchQuery": "phthalate",
"maxResults": 50,
})
for substance in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{substance['name']} | CAS: {substance['casNumber']} | {substance['hazardClassification']}")

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('studio-amba/echa-scraper').call({
searchQuery: 'phthalate',
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(s => console.log(`${s.name} | CAS: ${s.casNumber} | ${s.hazardClassification}`));

FAQ

What is ECHA?

The European Chemicals Agency (ECHA) is the EU agency responsible for implementing the REACH, CLP, and Biocidal Products regulations. Its database at echa.europa.eu is the authoritative source for information on chemical substances manufactured or imported in the European Economic Area, including registration dossiers, hazard classifications, and substance of very high concern (SVHC) listings.

How does ECHA Scraper work?

The scraper reads ECHA CHEM's public substance search, 100 substances per request, and turns each result into one row. It pages through the results until it reaches your Max Results or the end of the search. The old echa.europa.eu pages are now behind a bot check, so older infocard and search URLs are converted into ECHA CHEM searches.

ECHA publishes chemical substance data as part of its regulatory transparency mandate. The data is publicly accessible without login requirements. This scraper accesses only publicly available information and respects the site's rate limits through built-in concurrency controls.

How to scrape the ECHA chemicals database?

Set the Search Query field to a substance name (e.g., "formaldehyde") or CAS number (e.g., "50-00-0"), configure your desired Max Results, and click Start. The scraper returns structured JSON with all available substance fields. For bulk lookups, paste multiple substance URLs into the Start URLs field.

Is this an ECHA API alternative?

Yes. ECHA does not publish a documented bulk export. This scraper gives you the same substance data you see on ECHA CHEM as JSON, CSV or Excel, from one search or many.

How fresh is the data?

Each run reads live data from ECHA CHEM. The data is as current as what ECHA has published. Schedule recurring runs on Apify to keep your substance database automatically updated.

What is REACH and how does it relate to ECHA?

REACH (Registration, Evaluation, Authorisation and Restriction of Chemicals) is the EU regulation governing chemical substances. ECHA is the agency that manages the REACH database. Every chemical substance manufactured or imported into the EU above one tonne per year must be registered in the ECHA database with safety data. This scraper reports whether a substance is REACH registered and its tonnage band.

Can I search by CAS number?

Yes. Enter a CAS number (e.g., "71-43-2" for Benzene or "80-05-7" for Bisphenol A) directly in the Search Query field. A CAS number can also match mixtures and reaction masses that contain the substance, so a search for 50-00-0 returns formaldehyde plus those entries.

Limitations

  • Some fields are empty when ECHA holds no value for them. Molecular formula and tonnage band are missing on many substances that have no REACH registration
  • Searches must be 2 to 40 characters, and one search returns at most 10,000 substances
  • hazardClassification says which kind of classification exists, not the hazard classes themselves
  • Registration dossiers are not downloaded

Other regulatory data scrapers

Building a compliance monitoring pipeline? These scrapers cover adjacent regulatory databases:

  • Staatsblad Scraper β€” Belgian Official Gazette: laws, royal decrees, and ministerial orders
  • Safety Gate Scraper β€” EU product safety alerts and RAPEX recall notifications
  • EFSA Scraper β€” EU food safety alerts, scientific opinions, and risk assessments
  • EUR-Lex Scraper β€” EU regulations, directives, and legal acts from the Official Journal

Your feedback

Found a bug or have a feature request? Open an issue on the Issues tab and we will address it promptly. Your feedback helps us improve the scraper for everyone.

Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API β€” maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.

See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.