Skip to main content

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.

Last reviewed API dataset checked by the editorial deskChangelog

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.

GET
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.

ParameterRequiredFormatDescription
professionOptionalLowercase slug, pattern [a-z0-9-]+, max 80 charactersReturns only the matching profession. Omit it to return all professions. An unknown slug returns HTTP 404 instead of an empty list.
cityOptionalLowercase slug, pattern [a-z0-9-]+, max 80 charactersReturns only the matching city. Omit it to return all cities. An unknown slug returns HTTP 404 instead of an empty list.

Example requests

Full dataset
curl https://freelancerateindia.com/api/rates.json
One profession in one city
curl "https://freelancerateindia.com/api/rates.json?profession=web-developer&city=bangalore"
JavaScript (browser or Node)
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.

200 OK — GET /api/rates.json?profession=web-developer&city=bangalore
{
  "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:

404 Not Found — ?profession=not-a-real-profession
{
  "error": "Unknown profession slug"
}

A parameter that breaks the slug pattern (uppercase, spaces or symbols) returns 400 with the validation issues:

400 Bad Request — ?profession=Web+Developer
{
  "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.json

License 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.