Skip to main content

What's Inside the K-REACH Chemical Substance API: 5 Queries for Compliance Workflows

If you handle chemical compliance for products entering Korea, the question is rarely "is this chemical dangerous." It is "how does Korea classify it, is it registered, and does it carry a GHS label requirement." Those answers live in K-REACH — Korea's Act on Registration and Evaluation of Chemical Substances — and in the GHS classifications maintained alongside it.

The K-REACH Chemical Substance API exposes 47,517 registered substances, each with nine regulatory flags, plus GHS hazard data, through a single JSON interface. Like our cosmetics API, the data is Korean in origin, but the fields a chemical compliance workflow uses — CAS number, English name, the hazard flags, GHS pictogram codes, UN numbers — come back in English or in international standard form. A non-Korean-speaking analyst can run the whole thing.

This post walks through five real queries and what each one answers.


The nine flags

Every substance in the database carries nine boolean regulatory flags. They are the backbone of every query below:

  • is_toxic — toxic substance
  • is_prohibited — prohibited substance
  • is_restricted — restricted substance
  • is_priority — priority-management substance
  • is_cmr — carcinogenic, mutagenic, or reprotoxic
  • is_persistent — persistent organic pollutant
  • is_accident_prep — accident-preparedness substance
  • is_registration_req — registration required
  • is_rotterdam — Rotterdam Convention (trade-controlled)

Scenario 1: Look up a substance by CAS number

The standard entry point. Given a CAS number, return the substance's identifiers, names, and all nine flags in one call. Here is a PFOS salt — one of the most heavily classified substances in the database.

GET /v1/substance/cas/2795-39-3

{
  "substance": {
    "id": 19387,
    "cas_no": "2795-39-3",
    "ke_no": "KE-18223",
    "name_eng": "Potassium perfluorooctanesulfonate",
    "name_kor": "퍼플루오로옥탄술폰산 칼륨",   // Korean name
    "formula": null,
    "weight": null,
    "flags": {
      "is_toxic": true,
      "is_restricted": false,
      "is_prohibited": false,
      "is_priority": true,
      "is_cmr": true,
      "is_accident_prep": false,
      "is_persistent": true,
      "is_registration_req": false,
      "is_rotterdam": true
    }
  },
  "regulations": [ ... ]
}

Five flags at once — toxic, priority-management, CMR, persistent organic pollutant, and Rotterdam. The ke_no is Korea's own substance identifier (KE number), used in MFDS and Ministry of Environment notices. The regulations array, abbreviated here, lists the Korean classification notices behind each flag with their dates. Everything a compliance analyst needs to read the substance's status is in English or numeric form; only name_kor is Korean.


Scenario 2: Pull GHS label data for an SDS

For anyone writing a Safety Data Sheet or a label, the GHS endpoint returns the signal word, pictogram codes, UN number, and hazard classifications. Here is benzene.

GET /v1/ghs/71-43-2

{
  "substance": {
    "cas_no": "71-43-2",
    "name_eng": "Benzene",
    "formula": "C6H6",
    "weight": "78.11",
    "flags": { "is_toxic": true, "is_priority": true,
               "is_accident_prep": true, "is_registration_req": true, ... }
  },
  "ghs": {
    "signal_word": "위험",          // "Danger"
    "pictograms": ["GHS02", "GHS07", "GHS08"],
    "un_number": "1114",
    "hazards": [ ... ]
  }
}

The pictogram codes (GHS02 flammable, GHS07 irritant, GHS08 health hazard) and the UN number (1114) are international standards — the same on a label in Seoul, Frankfurt, or Houston. Only the signal word comes back in Korean (위험 = "Danger"), and the GHS code for it is universal. The benzene classification here matches its standard GHS profile: a Danger signal word with flammable, irritant, and serious-health-hazard pictograms.


Scenario 3: Search by name

When you do not have a CAS number, a name search returns every match with its flags. A partial match on "formaldehyde" returns the parent compound and its many reaction products and derivatives.

GET /v1/substance/search?q=formaldehyde

{
  "page": 1,
  "limit": 10,
  "has_next_page": true,
  "items": [
    {
      "id": 60,
      "cas_no": "98219-66-0",
      "name_eng": "Rosin, maleated, reaction products with formaldehyde",
      "flags": { "is_toxic": false, "is_prohibited": false, ... }
    },
    ...
  ]
}

Results are paginated (has_next_page tells you when to fetch more). This is how you map a whole chemical family — every formaldehyde derivative, every perfluoro compound — and see at a glance which carry flags and which do not. Searching by English name returns English-named results; the flags are English throughout.


Scenario 4: List everything under one regulation type

The regulations endpoint returns every substance under a chosen classification. This is the query behind our published analyses — for example, pulling the full prohibited list.

GET /v1/regulations/list?type=prohibited

{
  "regulation_type": "prohibited",
  "page": 1,
  "has_next_page": true,
  "items": [
    {
      "id": 2219,
      "cas_no": "20859-73-8",
      "name_eng": "Aluminum phosphide",
      "flags": { "is_toxic": true, "is_prohibited": true,
                 "is_rotterdam": true, ... }
    },
    {
      "id": 2522,
      "cas_no": "92-67-1",
      "name_eng": "4-Aminobiphenyl",
      "flags": { "is_toxic": true, "is_prohibited": true, ... }
    },
    ...
  ]
}

The type parameter accepts each of the nine flags: prohibited, toxic, restricted, priority, cmr, persistent, accident_prep, registration_req, and rotterdam. The prohibited list above is the data behind our 97-banned-substances post. Change the type to persistent and you get the persistent organic pollutants — the data behind our PFAS analysis.


Scenario 5: Cross-reference a class against a flag

Scenarios 3 and 4 combine into the query most compliance work actually needs. Pull a chemical family by name search, then check each member against a regulation list — for example, which perfluoro compounds are flagged as persistent organic pollutants.

GET /v1/regulations/list?type=persistent

{
  "regulation_type": "persistent",
  "items": [
    {
      "cas_no": "2043-53-0",
      "name_eng": "Decane, ...heptadecafluoro-10-iodo-",
      "flags": { "is_persistent": true, ... }
    },
    ...
  ]
}

For a compliance team tracking PFAS or other substances of concern across markets, this is the core workflow: identify the family, pull the flagged subset, and compare against what other jurisdictions restrict. The flags map cleanly onto international frameworks — is_persistent to the Stockholm Convention, is_rotterdam to the Rotterdam Convention — so a Korean classification can be lined up against a global one without translation.


Working in English

Almost everything a chemical compliance workflow needs is English or international-standard: cas_no, ke_no, name_eng, formula, weight, all nine flags, the GHS pictogram codes, and the UN number. The Korean fields — name_kor, the signal word text, and the full Korean notice references in the regulations array — are preserved so a Korean-speaking analyst can verify against the source, but they are not needed to read a substance's regulatory status, build an SDS, or compare against another market's rules.


Sources and scope

The data is collected from Korea's official open-data portal (data.go.kr), drawing on the Ministry of Environment chemical substance and GHS datasets. It covers 47,517 registered substances with their K-REACH classifications and GHS hazard data. The flags reflect the classification notices recorded for each substance; the original notice references are preserved in the regulations array for verification.

For how this data turns into analysis, see 47,000 Chemicals in Korea's Database. Only 97 Are Banned and the PFAS analysis. For cosmetic ingredient data, see our K-Beauty API guide.


Getting started

The K-REACH Chemical Substance API is available on RapidAPI. The free tier covers exploration; higher tiers raise the request volume for bulk classification work.


Methodology and Sources

All API responses shown were retrieved directly from the live K-REACH Chemical Substance API. JSON payloads have been abbreviated for readability, and English annotations after // were added for explanation — they are not part of the API output. The full regulations arrays, containing Korean classification notices and dates, are not shown in full.

Underlying data: Korea's data.go.kr open-data portal, Ministry of Environment chemical substance and GHS datasets, covering 47,517 registered substances.

The benzene GHS classification (signal word Danger; pictograms GHS02, GHS07, GHS08; UN 1114) was cross-checked against published GHS classification references and standard safety data sheets.


Important Notice: This article is for informational purposes only. It is not legal, regulatory, or safety advice. Chemical classifications and GHS data change and must be verified against the current official source before use in any registration, SDS, or labeling decision. API responses reflect the database at the time of retrieval. For full terms, see our Disclaimer.


Decoded Korea publishes data-driven analysis of Korean cosmetic ingredients, chemical regulations, and safety data.

Comments

Popular posts from this blog

Sunscreen UV Filters: A 10-Country Comparison

A sunscreen formulated for sale in Seoul cannot always be sold as-is in New York, Paris, or São Paulo. Each country maintains its own list of permitted UV filters, and the lists rarely match. A filter that is legal at 10% in one market may be banned in the next, or capped at 5%, or allowed only in specific product types. We mapped UV filter approvals across 10 markets — the EU, Korea, Japan, China, Taiwan, ASEAN, the US, Canada, Brazil, and Argentina — using a structured database of 21,796 cosmetic ingredients with 30,960 regulatory records. Below is what the data shows. What every country agrees on Two UV filters are approved in all 10 markets: Zinc Oxide — mineral filter, broad spectrum (UVA + UVB) Titanium Dioxide — mineral filter, UVB and partial UVA These are the only filters with universal approval. Any formulation designed to sell identically across all 10 markets without reformulation must rely on these two ingredients. This is why most global brands lead with minera...

Banned in Europe, Legal in Korea: 5 Ingredients That Split Global Regulators

The same moisturizer that sits on a shelf in Seoul could be pulled from a store in Paris. Not because of a labeling error or a packaging defect — but because an ingredient inside is classified differently by two governments looking at the same scientific data. This happens more often than most consumers realize. The EU and South Korea — both major cosmetics markets with sophisticated regulatory systems — frequently disagree on where to draw the line. The EU's cosmetics regulation (EC 1223/2009) maintains one of the strictest banned substance lists in the world, with over 1,600 entries in Annex II. Korea's MFDS takes a different approach, often allowing the same ingredients under specific concentration limits or without restriction. Neither system is wrong. They operate under different regulatory philosophies: the EU leans toward the precautionary principle — restrict first, revisit later. Korea tends toward risk management — allow under controlled conditions, monitor outcomes...

Are Parabens Really Banned? We Checked 10 Countries.

"Paraben-free" is one of the most common claims on skincare packaging. It is on drugstore moisturizers, high-end serums, and K-Beauty toners. The message: parabens are bad, and this product does not have them. But if parabens are so dangerous, why has no country banned them outright? We queried our regulatory database covering 10 countries and found that not a single one prohibits all parabens. What parabens actually are Parabens are a family of preservatives derived from para-hydroxybenzoic acid. They prevent bacteria and mold from growing in cosmetic products. Without preservatives, a jar of moisturizer would become a petri dish within weeks. The most common parabens in cosmetics are Methylparaben, Ethylparaben, Propylparaben, and Butylparaben. These four have been used in cosmetics for decades. There are also less common variants — Isopropylparaben, Isobutylparaben, and others — that have a different regulatory status. The concern around parabens started with a 2004 ...