The Problem Nobody Talks About
If you’ve ever tried to check whether a cosmetic ingredient is legal in South Korea, you know the pain:
- 🇰🇷 Government websites only in Korean
- 📄 Data buried in PDFs, not databases
- 🔍 No search functionality
- 🚫 No official API
For cosmetic brands trying to enter the Korean market, this means hours of manual research, expensive consultants, or just… guessing.
I decided to fix this.
What I Built
K-Beauty Cosmetic Ingredients API — A REST API with:
- ✅ 21,796 ingredients from official Korean sources
- ✅ INCI names, CAS numbers, Korean translations
- ✅ Regulatory status (Prohibited / Restricted / Not Listed)
- ✅ Concentration limits and conditions
- ✅ Fast JSON responses (<50ms)
Data comes directly from:
- MFDS (Ministry of Food and Drug Safety) — Korea’s FDA
- KCIA (Korea Cosmetic Industry Association)
Quick Example
Want to check if Retinol is restricted in Korea?
import requests
response = requests.get(
"https://k-beauty-cosmetic-ingredients.p.rapidapi.com/v1/ingredient/inci",
params={"q": "retinol"},
headers={
"X-RapidAPI-Key": "YOUR_API_KEY",
"X-RapidAPI-Host": "k-beauty-cosmetic-ingredients.p.rapidapi.com"
}
)
data = response.json()
print(data)
Response:
{
"success": true,
"count": 3,
"data": [
{
"inci_name": "RETINOL",
"kr_name": "레티놀",
"cas_numbers": "68-26-8",
"regulation_status": "Restricted",
"purposes": "Skin conditioning"
}
]
}
Now you know: Retinol is restricted (allowed with conditions) in Korean cosmetics. No PDF digging required.
Who Is This For?
| User | Use Case |
|---|---|
| 🧪 Cosmetic Formulators | Check ingredients before formulating |
| 📋 Regulatory Consultants | Speed up compliance audits |
| 🏭 Manufacturers | Validate formulations for Korea export |
| 📱 App Developers | Build ingredient scanner apps |
| 🛒 E-commerce | Show safety info on product pages |
API Endpoints
| Endpoint | Description |
|---|---|
/v1/ingredient/inci?q= |
Search by INCI name |
/v1/ingredient/cas?q= |
Search by CAS number |
/v1/ingredient/kr?q= |
Search by Korean name |
/v1/ingredient/search?q= |
Partial text search |
/v1/ingredient/status?s= |
Filter by regulatory status |
/v1/stats |
Database statistics |
Tech Stack
For those curious about how it’s built:
- Backend: Python, FastAPI
- Database: SQLite (read-only mode)
- Server: Gunicorn + Uvicorn workers
- Infrastructure: AWS EC2, Docker
- Monitoring: Telegram alerts
- Distribution: RapidAPI
Why SQLite?
The data is essentially static (updated monthly). SQLite in read-only mode gives us:
- Zero configuration
- Fast reads
- No separate database server
- Easy backups
For a read-heavy API with ~22K records, it’s perfect.
Lessons Learned
1. Government Data is Messy
Scraping and normalizing data from multiple sources took 10x longer than building the API itself.
2. B2B > B2C for Niche APIs
Consumer apps want “safety scores.” Businesses want regulatory compliance data. They’re willing to pay for it.
3. Documentation Matters
Good docs = fewer support questions = more time for features.
Try It Free
The API is live on RapidAPI with a free tier (100 requests/month).
🔗 K-Beauty Cosmetic Ingredients API
What’s Next?
- [ ] Monthly data updates
- [ ] More search filters
- [ ] Batch lookup endpoint
- [ ] Python/JS SDK packages
Questions?
Drop a comment below or reach out on RapidAPI. Happy to help!
If you’re working on cosmetic tech or regulatory compliance tools, I’d love to hear about your use case.