Rates API documentation
A free, public JSON endpoint with hourly rate benchmarks for 1+ professions and Indian cities. No API key, no sign-up, CORS enabled. Data is licensed CC BY 4.0.
Endpoint
One GET endpoint serves the full dataset. Requests are answered without authentication; responses are cacheable for an hour and served with CORS headers so browser apps can call it directly.
https://freelancerateindia.com/api/rates.json- • Content type: application/json
- • Authentication: none
- • Caching: public, 1 hour in browsers, 1 day on CDNs
- • Errors: 400 for malformed parameters, 404 for an unknown slug
Query parameters
Both parameters are optional and combinable. Without them the endpoint returns every profession and city.
| Parameter | Required | Format | Description |
|---|---|---|---|
| profession | Optional | Lowercase slug, pattern [a-z0-9-]+, max 80 characters | Returns only the matching profession. Omit it to return all professions. An unknown slug returns HTTP 404 instead of an empty list. |
| city | Optional | Lowercase slug, pattern [a-z0-9-]+, max 80 characters | Returns only the matching city. Omit it to return all cities. An unknown slug returns HTTP 404 instead of an empty list. |
Example requests
curl https://freelancerateindia.com/api/rates.jsoncurl "https://freelancerateindia.com/api/rates.json?profession=web-developer&city=bangalore"const res = await fetch(
"https://freelancerateindia.com/api/rates.json?profession=web-developer"
);
const { professions, cities, datasetVersion } = await res.json();
const webDev = professions[0];
console.log(webDev.name, webDev.domestic.min, webDev.domestic.max);Example responses
A successful call returns metadata plus arrays of professions and cities. This example is generated from the same data modules as the live endpoint, with the arrays truncated to one entry each for readability.
{
"schemaVersion": "1.0",
"datasetVersion": "2026-09-24",
"dateModified": "2026-08-27",
"currency": "INR",
"unit": "hour",
"market": "India",
"methodology": "https://freelancerateindia.com/about",
"license": "https://creativecommons.org/licenses/by/4.0/",
"disclaimer": "Indicative market benchmarks, not a statistically representative survey or financial advice.",
"professions": [
{
"slug": "web-developer",
"name": "Web Developer",
"category": "Development",
"domestic": {
"min": 500,
"max": 2500
},
"international": {
"min": 1500,
"max": 4000
},
"billableHoursPerMonth": 120,
"skills": [
"React",
"Next.js",
"Node.js",
"WordPress",
"Tailwind CSS"
],
"canonicalUrl": "https://freelancerateindia.com/calculator/freelance-rate/web-developer"
}
],
"cities": [
{
"slug": "bangalore",
"name": "Bengaluru",
"state": "Karnataka",
"rateMultiplier": 1.2,
"rateIndexPercent": 20,
"indicativeMonthlyCostsInr": {
"living": 55000,
"rent1Bhk": 28000,
"coworking": 8000
},
"strengths": [
"Product startups",
"SaaS",
"AI/ML",
"DevOps"
],
"canonicalUrl": "https://freelancerateindia.com/city/bangalore"
}
]
}An unknown slug returns 404:
{
"error": "Unknown profession slug"
}A parameter that breaks the slug pattern (uppercase, spaces or symbols) returns 400 with the validation issues:
{
"error": "Invalid query parameters",
"issues": {
"profession": ["Invalid"]
}
}Response fields
Top-level
- schemaVersion
- Version of this JSON response shape, currently 1.0. Bump only on breaking changes.
- datasetVersion
- Date the benchmark data was last reviewed, currently 2026-09-24.
- dateModified
- Date the underlying editorial dataset was last modified.
- currency
- Always INR. All monetary fields are Indian rupees.
- unit
- Rates are quoted per hour.
- market
- Geographic market of the benchmarks, currently India.
- methodology
- URL of the published methodology and sources page.
- license
- Data is licensed CC BY 4.0 — attribute FreelanceRate India and link back.
- disclaimer
- Indicative benchmarks, not a survey or financial advice.
- professions
- Array of profession benchmark objects (filtered by the profession parameter).
- cities
- Array of city benchmark objects (filtered by the city parameter).
professions[]
- slug
- Stable identifier, e.g. web-developer. Reuse it as the profession filter value.
- name
- Display name, e.g. Web Developer.
- category
- Skill category, e.g. Development or Design.
- domestic
- Indicative hourly range {min, max} in INR for mid-level freelancers invoicing Indian clients.
- international
- Indicative hourly range {min, max} in INR for the same work invoicing international clients.
- billableHoursPerMonth
- Realistic billable hours per month for this craft — not 160.
- skills
- Core skills for the profession.
- canonicalUrl
- Canonical calculator page for this profession.
cities[]
- slug
- Stable identifier, e.g. bangalore. Reuse it as the city filter value.
- name
- Display name, e.g. Bengaluru.
- state
- Indian state or union territory.
- rateMultiplier
- Multiplier applied to the national baseline cost of doing business.
- rateIndexPercent
- Percentage difference versus the national baseline, e.g. 20 means +20%.
- indicativeMonthlyCostsInr
- Monthly {living, rent1Bhk, coworking} cost estimates in INR.
- strengths
- Sectors where local demand for freelance work is strongest.
- canonicalUrl
- Canonical city page.
OpenAPI schema
The complete machine-readable contract — every field, type and status code — is published as an OpenAPI 3.1 document. Import it into Postman, Insomnia or any OpenAPI tooling to generate typed clients automatically. Field-level examples inside the schema match the responses shown above.
View openapi.jsonLicense and attribution
API data is published under CC BY 4.0. You may reuse and republish it with attribution to FreelanceRate India and a link to this documentation. Ranges are indicative market benchmarks, not a statistically representative survey — say so when you republish them, and cite the methodology page as the source.