# India API (api.dharun.dev) > 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. Base URL: https://api.dharun.dev. Every endpoint is under `/v1`. Lookups are plain GETs; endpoints that take text also accept it as a POST body (text/plain, or JSON `{"text": ...}`); endpoints that take a file or a JSON document (OCR, image, PDF and audio tools, speech to text, the GST invoice) are POST only. No API key and no sign-up. CORS is open, so browsers can call it directly. JSON responses share one shape: `{ "data": ..., "meta": { ... } }`. `meta.source` names the dataset, its licence, version and the credit it asks for. Lists add `meta.total`, `meta.limit` and `meta.offset`. Errors are `{ "error": { "code", "message" } }` with a matching HTTP status: 400 for bad input, 404 when nothing matches, 429 over the rate limit, 503 while a dataset is not loaded. Rate limit: 600 requests per minute per client; endpoints that do heavy work (images, astronomy, live DNS) count as 10, file uploads as 15 and neural-network jobs (text to speech, speech to text, translation, background removal, denoise) as 30. Image, PDF and audio endpoints return the file itself. Uploads are POSTed as the body or as multipart/form-data, up to 10 MB a file (25 MB in all for a PDF merge). 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. ## Money and business - [Company logos](https://api.dharun.dev/docs/logos.md): Logos and details for companies listed on NSE and BSE. Example: `GET /v1/logos/TCS?utm_medium=llms` - [IFSC and banks](https://api.dharun.dev/docs/ifsc.md): IFSC to bank and branch. Example: `GET /v1/ifsc/SBIN0000001?utm_medium=llms` - [QR codes and barcodes](https://api.dharun.dev/docs/codes.md): QR codes, UPI payment QR codes and barcodes as SVG or PNG, and reading them from a photo. Example: `GET /v1/qr?text=https://api.dharun.dev&format=png&size=256&utm_medium=llms` - [HSN and SAC codes](https://api.dharun.dev/docs/hsn.md): GST classification codes for goods and services. Example: `GET /v1/hsn/0902?utm_medium=llms` - [Mutual fund NAVs](https://api.dharun.dev/docs/mutual-funds.md): Latest net asset value of every Indian mutual fund scheme. Example: `GET /v1/mutual-funds/122639?utm_medium=llms` - [Number to words](https://api.dharun.dev/docs/words.md): Numbers and rupee amounts in words, the Indian way. Example: `GET /v1/words/1,25,000.50?style=currency&utm_medium=llms` - [Format checks](https://api.dharun.dev/docs/validate.md): Check the format of a GSTIN, PAN or IFSC. Example: `GET /v1/validate/gstin/27AAPFU0939F1ZV?utm_medium=llms` - [GST invoice](https://api.dharun.dev/docs/invoice.md): A GST tax invoice as a PDF from JSON, with the tax worked out. Example: `POST /v1/invoice?utm_medium=llms` ## Places and transport - [Pincodes](https://api.dharun.dev/docs/pincode.md): Pincode to post office, district and state. Example: `GET /v1/pincode/637001?utm_medium=llms` - [RTO codes](https://api.dharun.dev/docs/rto.md): Vehicle registration code to transport office. Example: `GET /v1/rto/TN-28?utm_medium=llms` - [Railway stations](https://api.dharun.dev/docs/stations.md): Indian Railways station codes to stations, and back. Example: `GET /v1/stations/MAS?utm_medium=llms` - [Constituencies](https://api.dharun.dev/docs/constituency.md): Which assembly and Lok Sabha constituency a place is in. Example: `GET /v1/constituency?pincode=637001&utm_medium=llms` - [Airports](https://api.dharun.dev/docs/airports.md): Airport codes to airports, and airports by city. Example: `GET /v1/airports/MAA?utm_medium=llms` - [States](https://api.dharun.dev/docs/states.md): States and union territories with their codes. Example: `GET /v1/states?utm_medium=llms` ## Dates and calendars - [Holidays](https://api.dharun.dev/docs/holidays.md): Bank, government and stock market holidays. Example: `GET /v1/holidays/2026?type=market&utm_medium=llms` - [Working days](https://api.dharun.dev/docs/working-days.md): Bank, market, settlement and government working days. Example: `GET /v1/working-days/2026-01-16?calendar=bank&state=TN&add=3&utm_medium=llms` - [Panchang](https://api.dharun.dev/docs/panchang.md): Hindu almanac for any date and place: tithi, nakshatra, Rahu kalam and more. Example: `GET /v1/panchang/2026-01-14?pincode=600001&utm_medium=llms` - [Sun and moon](https://api.dharun.dev/docs/sun-moon.md): Sunrise, sunset, twilight, moonrise and the moon's phase for any date and place. Example: `GET /v1/sun-moon/2026-10-14?pincode=600001&utm_medium=llms` ## Language and text - [Thirukkural](https://api.dharun.dev/docs/thirukkural.md): All 1,330 kurals in Tamil with English translations. Example: `GET /v1/thirukkural/1?utm_medium=llms` - [Text tools](https://api.dharun.dev/docs/text.md): Chunk documents, redact identifiers and names, moderate, count tokens, detect language. Example: `GET /v1/text/chunk?size=200&overlap=20&text=%23+Setup%0A%0AInstall+Go.+Clone+the+repository.%0A%0A%23+Deploy%0A%0APush+to+main.&utm_medium=llms` - [Transliteration](https://api.dharun.dev/docs/transliterate.md): Rewrite text between Indian scripts and Roman letters, or turn Roman typing into an Indian script. Example: `GET /v1/transliterate?to=tamil&text=%E0%A4%A8%E0%A4%AE%E0%A4%B8%E0%A5%8D%E0%A4%A4%E0%A5%87+%E0%A4%AD%E0%A4%BE%E0%A4%B0%E0%A4%A4&utm_medium=llms` - [Tamil legacy encodings](https://api.dharun.dev/docs/tamil-font.md): Old Tamil text that shows as accented Latin letters, to Unicode and back. Example: `GET /v1/tamil-font/convert?from=tscii&text=%C2%BE%C3%81%C2%A2%C3%BA+%C3%85%C2%BD%C3%AC%C2%B8%C3%B5&utm_medium=llms` - [Speech](https://api.dharun.dev/docs/speech.md): Speech to text, text to speech in Hindi, Telugu, Malayalam and English, and noise removal. Example: `POST /v1/stt?utm_medium=llms` - [Embeddings and reranking](https://api.dharun.dev/docs/embeddings.md): Vectors for semantic search in Indian languages and English, and a reranker to order results. Example: `GET /v1/embed?type=query&text=How+do+I+renew+my+passport%3F&utm_medium=llms` - [Translation](https://api.dharun.dev/docs/translate.md): Translate between English and 22 Indian languages with IndicTrans2. Example: `GET /v1/translate?from=en&to=ta&text=The+train+to+Chennai+leaves+at+6+pm.+Please+reach+the+station+early.&utm_medium=llms` ## Network and contact checks - [IP address location](https://api.dharun.dev/docs/ip.md): IP address to country, state, city and network. Example: `GET /v1/ip/49.204.0.1?utm_medium=llms` - [Email checks](https://api.dharun.dev/docs/email.md): Is an email address well formed, throwaway, and able to receive mail. Example: `GET /v1/email/someone@mailinator.com?utm_medium=llms` - [DNS check](https://api.dharun.dev/docs/dns.md): A domain's DNS records at four public resolvers at once. Example: `GET /v1/dns/dharun.dev?type=MX&utm_medium=llms` - [Phone numbers](https://api.dharun.dev/docs/phone.md): Check and format an Indian phone number, and see whose series it is. Example: `GET /v1/phone/+91%2095001%2012345?utm_medium=llms` - [Traceroute from India](https://api.dharun.dev/docs/mtr.md): The network path from a server in India to any host, with loss and latency per hop. Example: `GET /v1/mtr/1.1.1.1?utm_medium=llms` - [Whois](https://api.dharun.dev/docs/whois.md): Who registered a domain, an IP network or an AS number, through RDAP. Example: `GET /v1/whois/google.in?utm_medium=llms` - [TLS check](https://api.dharun.dev/docs/tls.md): A website's certificate and TLS setup, checked from India. Example: `GET /v1/tls/dharun.dev?utm_medium=llms` - [IPv6 check](https://api.dharun.dev/docs/ipv6.md): Is a domain ready for IPv6: website, nameservers and mail. Example: `GET /v1/ipv6/dharun.dev?utm_medium=llms` - [HTTP probe from India](https://api.dharun.dev/docs/probe.md): How fast a URL answers from India: DNS, connect, TLS, first byte and the CDN edge. Example: `GET /v1/probe?url=https://dharun.dev&utm_medium=llms` - [Website icons](https://api.dharun.dev/docs/icon.md): The icon of any website as a square PNG, for lists of links and bookmarks. Example: `GET /v1/icon/github.com?utm_medium=llms` ## Files, documents and media - [OCR](https://api.dharun.dev/docs/ocr.md): Text from photos, scans and scanned PDFs, in English and ten Indian languages. Example: `POST /v1/ocr?lang=eng+tam&utm_medium=llms` - [Image tools](https://api.dharun.dev/docs/image-tools.md): Resize and convert pictures, remove backgrounds, and compare pictures by how they look. Example: `POST /v1/image/convert?format=webp&width=400&utm_medium=llms` - [PDF tools](https://api.dharun.dev/docs/pdf.md): Merge, split, rotate and compress PDFs, read their text and draw their pages. Example: `POST /v1/pdf/info?utm_medium=llms` - [Typst to PDF](https://api.dharun.dev/docs/typst.md): Turn a Typst document into a PDF, with Indian scripts set correctly. Example: `GET /v1/typst?text=%23set%20page%28width%3A%2012cm%2C%20height%3A%20auto%2C%20margin%3A%201cm%29%0A=%20வணக்கம்%2C%20India%20API%0ATypst%20sets%20%2ATamil%2A%2C%20हिन्दी%20and%20English%20on%20one%20page.&utm_medium=llms` ## Developer tools - [Regex tester](https://api.dharun.dev/docs/regex.md): Run a regular expression against a text and see every match, explained. Example: `GET /v1/regex?flags=i&pattern=%28%3F%3Cstate%3E%5BA-Z%5D%7B2%7D%29%5B+-%5D%3F%28%5Cd%7B2%7D%29&text=Cars+TN+37%2C+ka-05+and+MH12&utm_medium=llms` - [Fake test data](https://api.dharun.dev/docs/fake.md): Made-up Indian people, companies and addresses for testing apps. Example: `GET /v1/fake/people?count=3&state=TN&seed=42&utm_medium=llms` - [Generated images](https://api.dharun.dev/docs/images.md): Social preview images and code screenshots from a URL. Example: `GET /v1/og-image?title=Free%20APIs%20for%20Indian%20developers&subtitle=Pincodes%2C%20IFSC%2C%20holidays%20and%20more&site=api.dharun.dev&utm_medium=llms` ## Sky and radio - [Satellite passes](https://api.dharun.dev/docs/satellites.md): When the ISS and amateur radio satellites pass over you, and where they are now. Example: `GET /v1/sat-pass?sat=ISS&pincode=600001&utm_medium=llms` - [HF propagation](https://api.dharun.dev/docs/propagation.md): Space weather and a rough rating of shortwave radio bands, day and night. Example: `GET /v1/propagation?utm_medium=llms` ## Guides - [Get warned before a TLS certificate expires](https://api.dharun.dev/guides/certificate-expiry.md): Check your sites' certificates from a daily cron job and get an alert when one is close to expiry, invalid or missing an intermediate. - [Bank holidays, working days and T+1 settlement dates](https://api.dharun.dev/guides/working-days.md): Find whether a date is a bank holiday in a state, the next working day, N working days ahead, and NSE settlement dates, in Python. - [Check a GSTIN or PAN before you save it](https://api.dharun.dev/guides/gstin-pan-check.md): Catch typing mistakes in GSTINs and PANs with the check character, and read the state and PAN out of a GSTIN, in JavaScript. - [Fill city and state from a pincode in a web form](https://api.dharun.dev/guides/pincode-autofill.md): Look up the district and state as soon as someone types a six-digit pincode, with plain JavaScript and no API key. - [Make a UPI payment QR code for an amount](https://api.dharun.dev/guides/upi-qr-code.md): Generate a QR code that any UPI app can scan to pay a set amount to your UPI ID, or a upi://pay link for a button on mobile. - [Mask Aadhaar, PAN and phone numbers before an LLM sees them](https://api.dharun.dev/guides/redact-before-llm.md): Mask Indian personal identifiers in text before it reaches a language model or a log, with check-digit validation so ordinary numbers are left alone. - [Show NSE and BSE company logos in your app](https://api.dharun.dev/guides/company-logos.md): Put a listed company's logo in an img tag by ticker or ISIN, as SVG or sized PNG, with an initials tile when no logo exists. - [Show the bank and branch for an IFSC code](https://api.dharun.dev/guides/ifsc-bank-branch.md): Turn an IFSC into a bank name, branch and address, and check that the branch takes NEFT, RTGS, IMPS or UPI before you send money there. - [Write rupee amounts in words for invoices and cheques](https://api.dharun.dev/guides/amount-in-words.md): Spell an amount the Indian way, with lakh and crore, rupees and paise, in English, Hindi or Tamil. ## For AI agents - [MCP server](https://api.dharun.dev/mcp): Streamable HTTP, stateless, no authentication; 80 tools that return exactly what the REST endpoints return. Setup for each client: [AI tools](https://api.dharun.dev/ai.md) - [Agent Skill](https://api.dharun.dev/.well-known/agent-skills/india-api/SKILL.md): teaches a coding agent the API; `npx skills add dharunashokkumar/api.dharun.dev` - [OpenAPI 3.1 description](https://api.dharun.dev/openapi.json) - [Machine-readable index of every API](https://api.dharun.dev/v1) ## Optional - [Everything above in one file, with sample responses](https://api.dharun.dev/llms-full.txt) - [Privacy](https://api.dharun.dev/privacy.md): what is logged; IP addresses never are - [Security](https://api.dharun.dev/security.md): reporting issues, verifying releases - [About](https://api.dharun.dev/about.md): licences (code AGPL-3.0, examples MIT-0) and every data source - [Source code](https://github.com/dharunashokkumar/api.dharun.dev)