Developer Documentation
Integrate NameFYI data into your applications. Access surnames, given names, hanja characters, guides, glossary terms, and more through our JSON APIs, Python/npm packages, and machine-readable endpoints.
API Endpoints
All API endpoints return JSON responses with Content-Type: application/json.
No authentication is required. Free to use.
| Endpoint | Description | Cache |
|---|---|---|
GET /api/search/?q= |
Unified search across 7 entity types | 5m |
GET /api/surname/{slug}/ |
Surname detail with clan origins and population data | 1h |
GET /api/character/{slug}/ |
Hanja/Hanzi/Kanji character detail with stroke count and five elements | 1h |
GET /api/given-name/{slug}/ |
Given name detail with trends and meaning tags | 1h |
GET /api/surnames/?culture= |
List surnames, filterable by culture (max 200) | 1h |
GET /api/cultures/ |
List all 14 name cultures with stats | 1h |
GET /api/glossary/{slug}/ |
Glossary term with definition and related terms | 1h |
GET /api/guide/{slug}/ |
Educational guide with full content | 1h |
GET /api/character-lookup/?q= |
Look up hanja/hanzi/kanji characters by CJK input | none |
GET /api/random-name/?gender= |
Random Korean given name, filterable by gender | none |
GET /api/meaning-tags/?category= |
List meaning tags with name counts | 1h |
GET /api/openapi.json |
OpenAPI 3.1.0 specification (CORS enabled) | none |
Surname Detail
/api/surname/{slug}/
curl "https://namefyi.com/api/surname/kim-korean/"
{
"name_native": "김",
"name_romanized": "Kim",
"name_romanized_variants": ["Gim"],
"slug": "kim-korean",
"url": "/surname/kim-korean/",
"pronunciation_ipa": "kim",
"hanja": "金",
"hanja_meaning": "gold, metal",
"culture": {"name": "Korean", "slug": "korean"},
"population": 10689959,
"population_percentage": "21.6%",
"country_rank": 1,
"world_rank": 1,
"household_count": 3637625,
"origin": "Gimhae, Gyeongsang Province",
"historical_figures": ["Kim Yu-sin", "Kim Gu"],
"modern_celebrities": ["Kim Yuna", "BTS (Kim Taehyung)"],
"clan_origins": [
{
"name_ko": "김해",
"name_hanja": "金海",
"name_romanized": "Gimhae",
"slug": "gimhae-kim",
"url": "/clan/gimhae-kim/",
"region": "Gimhae, Gyeongsang",
"founder": "Kim Suro",
"founder_era": "42 AD",
"population": 4456700,
"rank_within_surname": 1
}
]
}
Character Lookup
Look up one or more CJK characters to get readings, meanings, stroke counts, and five elements data.
/api/character-lookup/?q={characters}
curl "https://namefyi.com/api/character-lookup/?q=%E9%87%91%E7%A7%80"
{
"results": [
{
"character": "金",
"unicode_codepoint": "U+91D1",
"reading_native": "금",
"reading_romanized": "geum",
"meaning": "gold, metal",
"stroke_count": 8,
"five_elements": "金 (Metal)",
"radical": "金"
},
{
"character": "秀",
"unicode_codepoint": "U+79C0",
"reading_native": "수",
"reading_romanized": "su",
"meaning": "excellent, refined",
"stroke_count": 7,
"five_elements": "金 (Metal)",
"radical": "禾"
}
]
}
Given Name Detail
/api/given-name/{slug}/
curl "https://namefyi.com/api/given-name/minjun-korean/"
{
"name_native": "민준",
"name_romanized": "Minjun",
"name_romanized_variants": ["Min-jun", "Minjoon"],
"slug": "minjun-korean",
"url": "/given-name/minjun-korean/",
"gender": "male",
"syllable_count": 2,
"meaning": "quick and talented",
"culture": {"name": "Korean", "slug": "korean"},
"hanja": "敏俊",
"hanja_meaning": "agile + handsome",
"etymology": {
"language": "Sino-Korean",
"meaning": "quick-witted and handsome",
"root": "敏 (min) + 俊 (jun)"
},
"popularity_score": 95,
"peak_decade": "2010s",
"trends": [
{"year": 2015, "rank": 1, "count": 5840},
{"year": 2020, "rank": 3, "count": 4210}
],
"meaning_tags": [
{"label": "Intelligence", "slug": "intelligence", "icon": "🧠", "category": "virtue", "url": "/meaning/intelligence/"}
]
}
Random Name
Get a random Korean given name, optionally filtered by gender.
/api/random-name/?gender={male|female}
curl "https://namefyi.com/api/random-name/?gender=female"
{
"name": {
"name_native": "서연",
"name_romanized": "Seoyeon",
"hanja": "瑞延",
"hanja_meaning": "auspicious + extend",
"meaning": "auspicious and flowing",
"gender": "female"
}
}
Search API
Unified search across surnames, given names, characters, glossary terms, guides, meaning tags, and cultures.
/api/search/?q={query}
curl "https://namefyi.com/api/search/?q=kim"
{
"results": [
{"type": "surname", "name": "Kim (김)", "slug": "kim-korean", "culture": "Korean", "url": "/surname/kim-korean/"},
{"type": "given_name", "name": "Kimiko (君子)", "slug": "kimiko-japanese", "culture": "Japanese", "url": "/given-name/kimiko-japanese/"}
],
"total": 2
}
Python Package
Install the pure Python engine with zero dependencies. Korean romanization, five elements analysis, and element compatibility.
pip install namefyi
from namefyi import romanize_korean, five_elements_for_strokes
# Romanize Korean name (Revised Romanization)
rom = romanize_korean("김민준")
print(rom) # "Gim Minjun"
# Five Elements analysis by stroke count
element = five_elements_for_strokes(8)
print(element) # "金 (Metal)"
# Check element compatibility
from namefyi import check_element_compatibility
compat = check_element_compatibility("金", "水")
print(compat) # "Harmonious"
Command-Line Interface
pip install "namefyi[cli]"
namefyi romanize 김민준 # Gim Minjun
namefyi elements 8 # 金 (Metal) — stroke count 8
namefyi elements 3 # 火 (Fire) — stroke count 3
MCP Server
Add name analysis tools to any AI assistant that supports Model Context Protocol.
pip install "namefyi[mcp]"
Claude Desktop configuration
{
"mcpServers": {
"namefyi": {
"command": "python",
"args": ["-m", "namefyi.mcp_server"]
}
}
}
Available tools
npm Package
TypeScript/JavaScript version with zero dependencies. Works in Node.js, Deno, Bun, and browsers.
npm install namefyi
import { romanizeKorean, fiveElementsForStrokes } from "namefyi";
// Romanize Korean name
const rom = romanizeKorean("김민준");
console.log(rom); // "Gim Minjun"
// Five Elements by stroke count
const element = fiveElementsForStrokes(8);
console.log(element); // "金 (Metal)"
AI / LLM Integration
NameFYI provides machine-readable content summaries following the llms.txt standard. These endpoints help AI models understand and reference our content.
A concise summary of NameFYI's content structure and key pages. Designed for AI models to quickly understand what the site offers and how it is organized.
# NameFYI.com
> Global names encyclopedia — surnames, given names,
hanja characters, and naming guides across 14 cultures.
## Browse
- [Surnames](https://namefyi.com/surnames/) — 1,000 surnames
- [Given Names](https://namefyi.com/given-names/) — 35,585 names
...
Extended version with complete URL patterns, i18n language codes, and page-level structure. Use this for deeper indexing and cross-referencing of NameFYI content.
Append .md to any page URL to get a markdown representation. Ideal for LLM context injection and RAG pipelines.
# Fetch a surname page as markdown
curl "https://namefyi.com/surname/kim-korean.md"
# Fetch a character page as markdown
curl "https://namefyi.com/character/geum-gold.md"
AI Crawler Policy: Our robots.txt explicitly allows GPTBot, ClaudeBot, and Google-Extended crawlers.
SEO & Standards
Standard endpoints for search engines, crawlers, and security researchers.
| Endpoint | Standard | Description |
|---|---|---|
| /sitemap.xml | Sitemaps 0.9 | Sitemap index with per-section sitemaps covering all content types |
| /robots.txt | REP | Crawler directives with explicit AI bot permissions |
| /.well-known/security.txt | RFC 9116 | Security vulnerability reporting contact information |
Structured Data
Every page includes JSON-LD structured data for rich search results:
- WebSite — with SearchAction for sitelinks search box
- BreadcrumbList — navigation breadcrumbs on all pages
- DefinedTerm — hanja/hanzi/kanji character pages with definitions
- Article — guide pages with author, dates, and reading time
- CollectionPage — index and listing pages
Internationalization
All content pages include hreflang
alternate links for 15 languages: English (default), Korean, Japanese, Chinese (Simplified), Spanish, French, German, Portuguese, Russian, Arabic, Hindi, Thai, Vietnamese, Indonesian, and Turkish.
OpenAPI Specification
A machine-readable OpenAPI 3.1.0 specification is available for all 12 JSON API endpoints. Use it with tools like Swagger UI, Postman, or code generators.
Download openapi.jsonFetch via command line
# Download the OpenAPI spec
curl "https://namefyi.com/api/openapi.json" -o openapi.json
# Pretty-print
curl -s "https://namefyi.com/api/openapi.json" | python -m json.tool
Rate Limits & Usage
Our APIs are free to use with no authentication required. To ensure fair access for everyone, please follow these guidelines:
- Keep requests under 60 requests per minute per IP address
- Include a descriptive
User-Agentheader identifying your application - Cache responses locally when possible — our API responses include
Cache-Controlheaders - CORS is enabled for browser-based requests from any origin
- For bulk data access, use the sitemap to discover all URLs, then append .md for machine-readable content
If you need higher-volume access or have integration questions, reach out via the contact in our security.txt.
Quick Reference
/api/surname/{slug}/
/api/character/{slug}/
/api/given-name/{slug}/
/api/search/?q=...
/api/surnames/?culture=...
/api/cultures/
/api/glossary/{slug}/
/api/guide/{slug}/
/api/character-lookup/?q=...
/api/random-name/?gender=...
/api/meaning-tags/?category=...
/api/openapi.json
pip install namefyi
npm install namefyi
/llms.txt
/{any-page}.md