Free Indian data and tools: pincode, IFSC, GSTIN, holidays, GST invoice PDF, OCR, UPI QR. No key.
One address for any MCP client. No sign-in needed on this server.
31 read12 other
Grouped by tool name. At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
Free, open source APIs for Indian data. Pincodes, IFSC and bank branches, GSTIN and PAN checks, bank and market holidays, RTO codes, company logos, UPI QR codes, numbers in lakh and crore, GST invoices as PDF, OCR in Indian languages, PDF and image tools, text to speech, and more: 37 APIs behind one consistent JSON shape. No API key, no sign-up, open CORS, and an MCP server so AI assistants can use it too.
Documentation: api.dharun.dev · API reference · Guides · Use with AI · OpenAPI · llms.txt
curl https://api.dharun.dev/v1/pincode/637001
{
"data": { "pincode": "637001", "district": "Namakkal", "stateCode": "TN", "state": "Tamil Nadu", "offices": [ ... ] },
"meta": { "source": { "name": "...", "licence": "...", "attribution": "..." } }
}
Each name links to its page, with every parameter, a real response and code in curl, JavaScript and Python.
| API | Example | What you get |
|---|---|---|
| Company logos | /v1/logos/TCS, /v1/companies/RELIANCE | SVG or PNG logo of an NSE or BSE listed company; sector, ISIN, market cap, indexes |
| Pincodes | /v1/pincode/637001, /v1/pincode/near?lat=&lng= | Post offices, district, state, coordinates; pincodes near a point |
| IFSC and banks | /v1/ifsc/SBIN0000001 | Bank, branch, address, MICR, payment systems |
| RTO codes | /v1/rto/TN-28 | Transport office for a vehicle registration |
| Holidays | /v1/holidays/2026?type=market | Bank, central government and stock market holidays |
| Working days | /v1/working-days/2026-01-16?calendar=bank&state=TN | Working day or not, the next one, N working days ahead, T+1 settlement dates; whether NSE is open |
| HSN and SAC | /v1/hsn/0902, /v1/hsn?q=tea | Tariff codes with descriptions and their chapter |
| Mutual funds | /v1/mutual-funds/122639 | Latest NAV of a scheme, search by name or fund house |
| Railway stations | /v1/stations/MAS | Station name, zone, state |
| Airports | /v1/airports/MAA | IATA and ICAO codes, city, coordinates |
| Phone numbers | /v1/phone/9500112345 | Valid or not, mobile or landline, original operator and circle |
| Constituencies | /v1/constituency?pincode=637001 | Assembly and parliamentary constituency for a place |
| Panchang | /v1/panchang/2026-01-14?pincode=600001 | Tithi, nakshatra, yoga, karana, sunrise, Rahu kalam, Tamil month |
| Sun and moon | /v1/sun-moon/today?pincode=600001 | Sunrise, sunset, twilight, moonrise, moon phase and illumination |
| Satellite passes | /v1/sat-pass?sat=ISS&pincode=600001 | When the ISS or an amateur radio satellite passes over, and whether it can be seen |
| HF propagation | /v1/propagation | Solar flux, K and A index, NOAA scales, and a day and night rating per band |
| Thirukkural | /v1/thirukkural/1 | Couplet, transliteration, two English translations; search and random |
| Transliteration | /v1/transliterate?to=tamil&text=... | Between nine Indian scripts, ISO 15919, IAST and ASCII |
| Tamil legacy encodings | /v1/tamil-font/convert?from=tscii&text=... | TSCII text to Unicode and back |
| IP lookup | /v1/ip/8.8.8.8, /v1/ip | Country, city and network of an address, or of the caller |
| Email check | /v1/email/someone@example.com | Syntax, disposable domain, whether the domain takes mail |
| DNS check | /v1/dns/example.com?type=MX | Records as several public resolvers see them |
| Traceroute from India | /v1/mtr/example.com | MTR-style path from a server in India: network, loss and latency per hop |
| QR, UPI QR and barcodes | /v1/qr?text=hello, /v1/upi-qr?pa=shop@okaxis&am=250, POST /v1/barcode/read | QR codes, UPI payment QR codes and links, barcodes; reading codes from a photo |
| GST invoice | POST /v1/invoice | A GST tax invoice PDF from JSON: CGST and SGST or IGST, HSN summary, amount in words, UPI QR |
| OCR | POST /v1/ocr?lang=eng+tam | Text from photos, scans and scanned PDFs in English and ten Indian languages |
| Image tools | POST /v1/image/convert?format=webp&width=800 | Resize and convert (WebP, AVIF, HEIC in), remove backgrounds, perceptual hashes |
| PDF tools | POST /v1/pdf/merge, /pages, /rotate, /compress, /text, /render | Merge, split, rotate, compress, read text, draw pages |
| Typst to PDF | /v1/typst?text=... | Typst documents to PDF or PNG, with Indian scripts |
| Speech | /v1/tts?text=...&voice=hi, POST /v1/audio/denoise | Text to speech in Hindi, Telugu, Malayalam and English; noise removal |
| Generated images | /v1/og-image?title=Hello | Link preview cards and code images, in ten scripts |
| Text tools | /v1/text/chunk, /redact, /tokens, /language | Chunking for retrieval, PII redaction, token counts, language detection |
| Regex tester | /v1/regex?pattern=...&text=... | Every match with its groups, replacement, the pattern explained |
| Fake Indian data | /v1/fake/companies?count=5 | Test people and companies with PAN and GSTIN that pass format checks |
| Number to words | /v1/words/1,25,000?lang=ta | Lakh and crore spelling in English, Hindi, Tamil |
| Format checks | /v1/validate/gstin/27AAPFU0939F1ZV | GSTIN, PAN and IFSC structure and check characters |
| States | /v1/states/TN | State codes, GST codes, vehicle prefixes |
{ "data": ..., "meta": { ... } }. data is an object, or an
array for list endpoints, which add meta.total, meta.limit and meta.offset.meta.source names the dataset, its version, its licence and the credit it asks for.{ "error": { "code", "message" } } with a matching HTTP status.?text=, or a POST body as text/plain or JSON {"text": "..."}.<img> tag; PDF and audio
endpoints return the file.multipart/form-data, up to
10 MB. Files are deleted when the answer is sent; nothing is kept.One MCP server, one Agent Skill and one Claude Code plugin cover every API.
# Claude Code: the MCP server
claude mcp add --transport http india-api https://api.dharun.dev/mcp
# Claude Code: the plugin (skill and MCP server together)
/plugin marketplace add dharunashokkumar/api.dharun.dev
/plugin install india-api@dharun-dev
# Any agent that reads Agent Skills (Claude Code, Codex, Copilot, Cursor, Gemini CLI)
npx skills add dharunashokkumar/api.dharun.dev
https://api.dharun.dev/mcp, Streamable HTTP, stateless, no
authentication. Each tool returns exactly what the matching REST endpoint returns.
Setup for Claude, ChatGPT, VS Code, Cursor, Windsurf, Gemini CLI and Codex:
api.dharun.dev/ai. In the MCP Registry as
io.github.dharunashokkumar/india-api.skills/india-api.plugins/india-api, with the marketplace in
.claude-plugin/marketplace.json./llms.txt,
/llms-full.txt, every page as Markdown (add
.md or send Accept: text/markdown), /openapi.json,
an MCP server card, an AI catalog and an API catalog under /.well-known/.The skill, the plugin and server.json are generated from the catalog in
internal/api/catalog.go; a test fails when the committed copies are out of date.
internal/orbit (BSD-2-Clause) and the Noto fonts (OFL-1.1). The release
bundle's NOTICES lists every one.Report vulnerabilities privately: see SECURITY.md. Client IP addresses are never logged, and endpoints that take personal values never log their input; the full list is at api.dharun.dev/privacy. Each release carries a build provenance attestation:
gh attestation verify dharun-api-linux-amd64.tar.gz --repo dharunashokkumar/api.dharun.dev
Bug reports, corrections to data and requests for new APIs are welcome as issues. Pull requests are not accepted; see CONTRIBUTING.md.
| Dataset | Source | Licence | Records |
|---|---|---|---|
| Pincodes | All India Pincode Directory, Department of Posts (data.gov.in) | Government Open Data License - India | 157,125 post offices |
| IFSC | razorpay/ifsc, compiled from Reserve Bank of India and NPCI lists | Public domain, as stated by the publisher | 183,214 branches |
| RTO codes | Wikipedia, "List of Regional Transport Office districts in India" | CC BY-SA 4.0 (shared under the same licence) | 1,361 codes |
| Bank holidays | Reserve Bank of India holiday matrix, 34 regional offices | Official publication | 2026 |
| Central government holidays | Department of Personnel and Training memoranda | Official publication | 2026, 2027 |
| Market and clearing holidays | National Stock Exchange of India | Official publication | 2026 |
| HSN and SAC codes | GST portal code list; the nomenclature is from the Customs Tariff Act, 1975 and GST notification 11/2017 | Statute | 22,614 codes |
| Mutual fund NAV | Association of Mutual Funds in India, NAVAll.txt | Published daily by AMFI; credited | 14,375 schemes |
| Railway stations | Wikipedia, "List of railway stations in India" | CC BY-SA 4.0 (shared under the same licence) | 3,975 stations |
| Airports | OurAirports | Public domain | 9,509 airports, 622 in India |
| Phone series | Wikipedia, "Mobile telephone numbering in India" | CC BY-SA 4.0 (shared under the same licence) | 2,247 series |
| Constituencies | DataMeet community maps | Assembly CC BY 2.5 India; parliamentary CC0 | 4,182 assembly, 543 parliamentary |
| Thirukkural | tk120404/thirukkural; translations by G.U. Pope and by Drew and Lazarus | Public domain text; compilation Apache-2.0 | 1,330 couplets |
| IP addresses | DB-IP Lite | CC BY 4.0 | fetched by each server |
| Orbit elements | CelesTrak, from US Space Force data via Space-Track.org; only computed passes and positions are published | None stated; redistribution with credit allowed by USSPACECOM | fetched by each server, 111 satellites |
| Space weather | NOAA Space Weather Prediction Center | Public domain (US government work) | fetched by each server, hourly |
| Speech voices | Piper voices, each trained on its own recordings | Per voice: public domain, CC BY 4.0, IIT Madras Indic TTS licence, or CC BY-NC-SA 4.0 (two Hindi voices, non-commercial) | fetched by each server, 10 voices |
| Background removal model | IS-Net (Qin et al.), ONNX export by rembg | Apache-2.0 | fetched by each server |
| Disposable email domains | disposable-email-domains | CC0 | 9,881 domains |
| Logos and company details | Collected from TradingView | Logos are trademarks of the companies they identify | 3,156 logos |
Exact versions, retrieval dates and checksums are in data/sources.json,
and every response repeats the credit in meta.source.
Known gaps:
Requires Go 1.26 or newer.
go run ./cmd/apidata build -resvg none # build every dataset from data/ into seed/
go run ./cmd/api # http://127.0.0.1:8080/
go test ./...
PNG output (logos and generated images) is rendered by
resvg; bash tools/fetch-resvg.sh <dir> downloads
the pinned Linux build. Without it everything else works and PNG requests answer 501.
Configuration is by environment variable; see
deploy/dharun-api.env.example.
ROADMAP.md tracks what is built, what is planned and what was turned down.
cmd/api the server
cmd/apidata data tool: build, import, refresh, status
internal/api routing, endpoints, the website, MCP, metrics
internal/api/guides the guides, in Markdown
internal/api/templates the Markdown forms of the pages and the skill
internal/dataset one file per dataset: how it is built, fetched and checked
internal/typeset text shaping and the fonts for generated images
internal/panchang almanac calculations
internal/translit transliteration between scripts
internal/tamilfont Tamil 8-bit encodings
internal/textkit chunking, redaction, token counts, language detection
internal/fake test data
internal/words number to words
internal/validate GSTIN, PAN, IFSC and checksum rules
internal/india states and their codes
data/ one folder per dataset (logos included), and sources.json
skills/ the Agent Skill (generated from the catalog)
plugins/ the Claude Code plugin (generated); marketplace in .claude-plugin/
server.json the MCP Registry entry (generated)
deploy/ systemd units, installer, self-updater, monitoring
tools/ release build, smoke test, install test, resvg download, logo scraper
Each dataset is its own read-only SQLite file. A release carries a seed copy of every
dataset, built from data/. On a server, apidata refresh runs hourly as a separate
short-lived job: each dataset that a program can fetch (IFSC, RTO codes, bank and market
holidays, HSN, mutual fund NAV, airports, stations, IP addresses, disposable domains) is
downloaded when it is due, checked, and built into a new file in the server's own data
directory. The API serves whichever copy is newer and picks up a new file without a
restart. A deploy replaces the seeds and never touches the server's own copies.
Datasets that cannot be fetched by a program are updated by hand and ship with a push:
go run ./cmd/apidata import pincode -file pincode.csv # CSV saved from data.gov.in
python tools/scrape_logo_metadata.py --refresh # logo metadata
go run ./cmd/apidata status # which copy of each dataset is in use
Central government holidays are typed into data/holidays/central/<year>.json from the
yearly memorandum, usually published in July for the following year.
Deployment is pull-based: the server fetches releases, nothing connects in to it.
main runs CI: tests, shell lint, a full release build, a smoke test of
the bundle against the full datasets, and an install of it on a fresh Debian 13.v1.1.<run number>.dharun-api-update.timer checks every 2 minutes. It downloads the new
release, verifies the checksum, switches to it, and checks /healthz. If the new
version does not come up, it switches back and marks that release as failed.Production workflow waits (up to 20 minutes) for the public
/healthz to report the new version, then runs the smoke test's route checks against
the live site. A release that was never installed, or was rolled back, fails the run.
The run shows on GitHub as a deployment to production.First-time setup on a Debian 12 or 13 machine or container, as root:
tar -C deploy -cz . | ssh <host> 'mkdir -p /root/api-deploy && tar -xz -C /root/api-deploy && sh /root/api-deploy/install.sh'
The server is one static binary plus a database file per dataset. It runs as the
unprivileged user dharun-api with a read-only filesystem, and uses about 35 MB of
memory idle and about 150 MB under a burst. The updater
runs as root and is only replaced by re-running install.sh. Restrict port 8080 to your
proxy and port 9464 to Prometheus with a firewall.
:9464/metrics serves Prometheus metrics: requests by API and status, response times,
logo lookups, memory, api_lifetime_requests_total, and for each dataset which copy is in
use, how old it is and whether its last refresh worked.:9464/stats serves the all-time totals as JSON. They are saved to disk and survive
restarts.deploy/monitoring/ has the Prometheus scrape job, alert rules
(API down, a refresh that keeps failing, stale data) and a Grafana dashboard.Company logos and trademarks belong to their respective owners. This project is an index for discovery and convenience; review each company's brand rules before production use. To request removal of a logo, open an issue.