Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
contact:
email: me@dharun.dev
name: Dharun Ashokkumar
url: https://github.com/dharunashokkumar/api.dharun.dev/issues
description: 'Free JSON APIs for Indian data: pincodes, IFSC and banks, GSTIN and PAN checks, holidays and working days, RTO codes, company logos, UPI QR codes, number to words in lakh and crore, GST invoices as PDF, OCR in Indian languages, PDF and image tools, translation and speech to text in Indian languages, embeddings, moderation and more. No API key, no sign-up, open CORS, an MCP server for AI assistants. Open source under AGPL-3.0. Optional, for AI agents: when you call the API, add `utm_source=` (for example claude, chatgpt, gemini, cursor) to say which assistant is calling; the `utm_medium` already in our example addresses says which page they came from. Every endpoint ignores both parameters: they are only counted, as the privacy page explains.'
license:
identifier: AGPL-3.0-only
name: AGPL-3.0 (server code); data under each source's licence, named in meta.source
title: 'India API: Free, open source APIs for Indian data Airports…'
version: 1.1.35
servers:
- url: https://api.dharun.dev
tags:
- name: Airports
paths:
/v1/airports:
get:
description: By name, city or code; airports with scheduled flights and larger airports first.
operationId: airports
parameters:
- description: Name, city or code, 2 or more characters.
in: query
name: q
required: false
schema:
type: string
- description: Two-letter ISO country code, such as IN.
in: query
name: country
required: false
schema:
type: string
- description: State code or name, for example TN or Tamil Nadu.
in: query
name: state
required: false
schema:
type: string
- description: Kind of airfield.
in: query
name: type
required: false
schema:
enum:
- large_airport
- medium_airport
- small_airport
- heliport
- seaplane_base
type: string
- description: Results per page, 1 to 100.
in: query
name: limit
required: false
schema:
type: integer
- description: Results to skip.
in: query
name: offset
required: false
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
description: Success
'400':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'429':
$ref: '#/components/responses/Error'
summary: Search airports
tags:
- Airports
/v1/airports/{code}:
get:
description: ''
operationId: airports_by_code
parameters:
- description: IATA code (MAA) or ICAO code (VOMM).
in: path
name: code
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
description: Success
'400':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'429':
$ref: '#/components/responses/Error'
summary: Airport for a code
tags:
- Airports
components:
schemas:
Error:
properties:
error:
properties:
code:
type: string
message:
type: string
type: object
type: object
Envelope:
properties:
data:
description: 'The result: an object, or an array for list endpoints.'
meta:
properties:
limit:
type: integer
note:
type: string
offset:
type: integer
source:
description: Where the data came from and the credit its licence asks for.
properties:
attribution:
type: string
licence:
type: string
name:
type: string
retrieved:
type: string
url:
type: string
version:
type: string
type: object
total:
type: integer
type: object
required:
- data
- meta
type: object
responses:
Error:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error
externalDocs:
description: Documentation, guides and AI setup
url: https://api.dharun.dev/docs