Developer API
Access employment compliance policies, employer & employee tax rates, income tax brackets, and public holidays for 41 countries via a simple REST API. Fully public — no authentication required.
Returns a list of all published countries with basic info.
| Parameter | Type | Default | Description |
|---|---|---|---|
include_states optional |
integer | 0 |
Set to 1 to include a states array of state codes for each country. |
[
{
"code": "US",
"name": "United States",
"url": "https://joinneo.com/country/united-states/",
"states": ["US-AL", "US-AK", "..."] // only with include_states=1
}
]
curl https://joinneo.com/wp-json/neo/v1/countries curl https://joinneo.com/wp-json/neo/v1/countries?include_states=1Try it →
Returns full employment data for a country — compliance policies, tax rates, income tax brackets, and public holidays.
| Parameter | Type | Description |
|---|---|---|
code required |
string | ISO 3166-1 alpha-2 country code (e.g. US, GB, DE). |
| Parameter | Type | Default | Description |
|---|---|---|---|
state optional |
string | null |
ISO 3166-2 state code (e.g. US-CA, CH-ZH) for state-specific data. |
fields optional |
string | null |
Comma-separated list of fields to include. See Fields Filter. |
{
"code": "US",
"name": "United States",
"url": "https://joinneo.com/country/united-states/",
"state": null,
"policies": {
"min_salary": { "amount": "57672.00", "currency": "USD", "period": "year" },
"hourly_rate": { "amount": "7.25", "currency": "USD" },
"notice_period": { "min_days": 0, "max_days": null },
"paid_time_off": { "accrual_days": 10, "accrual_rate": "year" },
"sick_leave": { "accrual_days": 5, "accrual_rate": "year", "...": "..." },
"probation": { "min_days": null, "max_days": 90 },
"work_hours": { "hours": 40, "rate": "week" }
},
"taxes": {
"employer": {
"total_rate": 10.35,
"components": [
{ "name": "Social Security", "key": "SOCIAL_SECURITY_TAX", "rate": 0.062 },
{ "name": "Medicare", "key": "MEDICARE_BASE_TAX", "rate": 0.0145 }
]
},
"employee": {
"total_rate": 7.65,
"components": [/* same shape */]
},
"income_tax_brackets": [
{
"key": "default",
"label": "Standard",
"tiers": [
{ "min": 0, "max": 11600, "rate": 0.1 },
{ "min": 11601, "max": 47150, "rate": 0.12 }
]
}
]
},
"holidays": [
{ "name": "New Year's Day", "date": "2026-01-01" }
],
"states": ["US-AL", "US-AK", "..."]
}
# National data curl https://joinneo.com/wp-json/neo/v1/countries/US # State-specific data curl https://joinneo.com/wp-json/neo/v1/countries/US?state=US-CATry it →
Returns all states or regions for a country. Available for United States (51), Australia (8), United Kingdom (4), Canada (13), Switzerland (26), Spain (19), Mexico (32), United Arab Emirates (7).
| Parameter | Type | Description |
|---|---|---|
code required |
string | ISO 3166-1 alpha-2 country code. |
[
{ "code": "US-AL", "name": "Alabama" },
{ "code": "US-AK", "name": "Alaska" },
// ...
]
curl https://joinneo.com/wp-json/neo/v1/countries/US/states curl https://joinneo.com/wp-json/neo/v1/countries/CH/statesTry it →
Returns full state-specific employment data. Same response shape as the country endpoint, with state and state_name populated.
| Parameter | Type | Description |
|---|---|---|
code required |
string | ISO 3166-1 alpha-2 country code. |
state_code required |
string | ISO 3166-2 state code (e.g. US-CA, CH-ZH, ES-CT, MX-JAL). |
| Parameter | Type | Default | Description |
|---|---|---|---|
fields optional |
string | null |
Comma-separated list of fields. See Fields Filter. |
{
"code": "US",
"name": "United States",
"url": "https://joinneo.com/country/united-states/",
"state": "US-CA",
"state_name": "California",
"policies": { /* state-specific policies */ },
"taxes": { /* state-specific tax rates */ },
"holidays": [ /* national + state holidays */ ]
}
curl https://joinneo.com/wp-json/neo/v1/countries/US/states/US-CA curl https://joinneo.com/wp-json/neo/v1/countries/CH/states/CH-ZH curl https://joinneo.com/wp-json/neo/v1/countries/MX/states/MX-JALTry it →
Use the ?fields= query parameter on the Get Country and Get State endpoints to return only the data you need. The response always includes identifiers (code, name, url, state).
| Field | Type | Description |
|---|---|---|
| Top-level sections | ||
policies | object | All compliance policies |
taxes | object | All tax data (employer, employee, brackets) |
holidays | array | Public holidays for the current year |
states | array | State codes (country endpoint only) |
| Individual policy fields | ||
min_salary | object | Minimum annual compensation |
hourly_rate | object | Minimum hourly rate |
notice_period | object | Termination notice requirements |
paid_time_off | object | PTO entitlement |
sick_leave | object | Sick leave entitlement |
probation | object | Probation period limits |
work_hours | object | Standard working hours |
| Individual tax fields | ||
employer | object | Employer contribution rates and components |
employee | object | Employee contribution rates and components |
income_tax_brackets | array | Progressive income tax tiers |
# Get only minimum salary for Germany curl https://joinneo.com/wp-json/neo/v1/countries/DE?fields=min_salary # Get minimum salary for California curl https://joinneo.com/wp-json/neo/v1/countries/US/states/US-CA?fields=min_salary # Holidays and PTO together curl https://joinneo.com/wp-json/neo/v1/countries/FR?fields=holidays,paid_time_off # Only employer tax rates curl https://joinneo.com/wp-json/neo/v1/countries/GB?fields=employer # Mix sections and individual fields curl https://joinneo.com/wp-json/neo/v1/countries/AU?fields=min_salary,employer,holidays
policies object| Field | Type | Description |
|---|---|---|
min_salary | object | Minimum annual compensation. Contains amount (string), currency (ISO), period ("year"). |
hourly_rate | object | Minimum hourly rate. Contains amount (string), currency (ISO). |
notice_period | object | Termination notice. min_days, max_days, min_days_during_probation. |
paid_time_off | object | PTO. accrual_days (int), accrual_rate ("year"/"month"). |
sick_leave | object | Sick leave. accrual_days, accrual_rate, requires_medical_certificate, employer_pays, government_pays. |
probation | object | Probation period. min_days, max_days. |
work_hours | object | Standard hours. hours (int), rate ("week"/"day"). |
taxes object| Field | Type | Description |
|---|---|---|
employer.total_rate | float | Total employer rate as percentage (e.g. 10.35 = 10.35%). |
employer.total_rate_max | float|null | Upper bound if rate varies by state. |
employer.components | array | Breakdown: name, key, rate (decimal, e.g. 0.062). |
employee.total_rate | float | Total employee rate as percentage. |
employee.components | array | Same shape as employer components. |
income_tax_brackets | array | Bracket groups with key, label, tiers (min, max, rate). |
holidays array| Field | Type | Description |
|---|---|---|
name | string | Holiday name in English. |
date | string | Date in YYYY-MM-DD format for the current year. |
Requests are rate-limited per IP address. The current limit is 60 requests per minute.
When the limit is exceeded, the API returns HTTP 429 with a Retry-After: 60 header:
{
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Try again later."
}
All errors return a JSON object with code and message fields.
| HTTP Status | Code | Description |
|---|---|---|
404 | not_found | Country code not recognized or page not published. |
404 | invalid_state | State code not found for the given country. |
404 | no_states | Country does not have states/regions. |
429 | rate_limit_exceeded | Rate limit exceeded. Wait and retry. |
503 | api_disabled | API disabled by administrator. |
The API covers 41 countries with payroll data. Countries with state-level data are shown with their region count.
AE
United Arab Emirates 7 states
AR
Argentina AT
Austria AU
Australia 8 states
BG
Bulgaria BR
Brazil BW
Botswana CA
Canada 13 states
CH
Switzerland 26 states
CL
Chile CO
Colombia CR
Costa Rica CZ
Czech Republic DE
Germany EG
Egypt ES
Spain 19 states
FR
France GB
United Kingdom 4 states
HK
Hong Kong IE
Ireland IN
India IT
Italy JP
Japan MA
Morocco MX
Mexico 32 states
MY
Malaysia NL
Netherlands NZ
New Zealand PH
Philippines PL
Poland QA
Qatar RO
Romania RS
Serbia SA
Saudi Arabia SG
Singapore TN
Tunisia TW
Taiwan US
United States 51 states
UY
Uruguay VN
Vietnam ZA
South Africa # List all countries curl https://joinneo.com/wp-json/neo/v1/countries # Full data for Germany curl https://joinneo.com/wp-json/neo/v1/countries/DE # Swiss cantons curl https://joinneo.com/wp-json/neo/v1/countries/CH/states # Zurich-specific data curl https://joinneo.com/wp-json/neo/v1/countries/CH/states/CH-ZH # Only minimum salary for California curl https://joinneo.com/wp-json/neo/v1/countries/US/states/US-CA?fields=min_salary
// Get UK employment data const response = await fetch('https://joinneo.com/wp-json/neo/v1/countries/GB'); const data = await response.json(); console.log(data.policies.paid_time_off); // { accrual_days: 28, accrual_rate: "year" } console.log(data.taxes.employer.total_rate); // 15.05 console.log(data.holidays.length); // 8
import requests # Get minimum salary in Mexico (Jalisco) r = requests.get('https://joinneo.com/wp-json/neo/v1/countries/MX/states/MX-JAL', params={'fields': 'min_salary'}) data = r.json() print(data['min_salary']) # { amount: "...", currency: "MXN", period: "year" }
This API is fully public and designed for use by LLMs, AI agents, and chatbots. No authentication required.
| Resource | URL | Purpose |
|---|---|---|
OpenAPI 3.1 |
https://joinneo.com/wp-json/neo/v1openapi.json | Full API spec — import into ChatGPT Actions, Claude tools, Swagger, Postman |
llms.txt |
https://joinneo.com/llms.txt | LLM-friendly API summary |
llms-full.txt |
https://joinneo.com/llms-full.txt | Detailed schema for LLM context windows |
.well-known |
https://joinneo.com/.well-known/neo-api.json | Auto-discovery manifest |
GET /countries/DE?fields=min_salaryGET /countries/FR?fields=paid_time_offGET /countries/GB?fields=employerGET /countries/JP?fields=holidaysGET /countries/US/states/US-CA?fields=notice_periodNeed to calculate total cost of employment? The EOR Quote API generates live quotes with employer taxes, statutory contributions, and management fees — returning shareable, branded quote URLs.