Trading APIs
Choosing a broker API for algo trading in India: start with the job
A broker API for algo trading in India should be compared against the job you need it to do: download an archive, submit occasional orders, read an option chain or receive a platform's instructions. Price alone does not establish a suitable data archive or execution workflow. This guide uses stated criteria and checked documentation, with separate cost components at three assumed order volumes. It does not select an overall winner.
Facts checked 14 Oct 2026 against 26 sources. No affiliate links. Not investment advice.
The criteria used in this decision guide
Required function
Specify the archive, order function or chain response. A documented endpoint matters more than a general automation headline.
Data identity and limits
Name the instrument, interval and expiry, and distinguish a request cap from the available archive. This matters even when the subscription is free.
Access and operating routine
Check the login flow, session boundary, permitted hosting and network requirements. Compare the actual interface you will run.
Cost at the intended activity
Count executed orders separately from data requests. State the subscription tier, tax basis, billing cycle and offer expiry.
Evidence and recovery
Look for enough documentation to reconcile submitted orders, returned status and the account record. We grade no broker's reliability because no controlled execution test was performed.
A low price answers only one part of the choice
An API is an interface through which software requests account functions or data. Selecting it starts with a list of required functions, rather than a league table. A backtester can need data while submitting no orders. An executor can need order permissions while obtaining data through a different legitimate source. These requirements lead to different subscription choices.
The evidence below covers Zerodha, Dhan, FYERS, Angel One, Upstox and Shoonya. It is a documentation comparison, with no account opening, live order, uptime or support-response test. A missing price or capability stays unverified. The detailed API charges comparison remains the authority for the wider broker list and its fee/limit conflicts.
Follow the branch that matches the program's main task
- 1
Archive first: a data-heavy backtester
Check the required dates, candle interval and expired-contract identity before the order API. Upstox v3, for example, documents minute/hour history from January 2022 and daily/week/month history from January 2000. Those different starts matter to a research specification; they do not establish complete observations for every instrument. Use the historical-data guide for the full archive comparison.
- 2
Orders first: an occasional executor
If the program already has an appropriate data source, examine the trading-only tier and login/network requirements. Kite Personal is free for account/order functions and excludes live/history data. Paying for Connect solves a data-access requirement; it does not improve a rule merely because money was spent. Keep the chosen data source's permitted-use conditions in the specification.
- 3
Chain first: an options-data reader
Ask for expiry selection, open interest, implied volatility and the fields actually returned. Dhan's chain docs list these fields and throttle the same unique request to one every three seconds, while allowing different underlying/expiry requests concurrently. That is a request condition, not measured refresh delay. A quote stream and a whole-chain response are different interfaces.
- 4
Platform first: a webhook or hosted workflow
Identify who runs the logic, receives the instruction and sends the order. Then check the broker's supported arrangement and the relevant registration/hosting requirements. A webhook's arrival alone does not establish that the broker accepted or executed an order. Do not give a platform account rights merely because its website displays a broker logo.
Cost components at 0, 50 and 500 executed option orders
Checked 14 October 2026. Assumed existing resident retail account; one charged subscription cycle. Brokerage figures are before GST. Data quotes retain their stated tax basis. No final tax-inclusive trading bill or activity recommendation is implied.
| API setup used | 0 orders | 50 orders | 500 orders | Scope and exclusions |
|---|---|---|---|---|
| Kite Connect with data | ₹500 stated data fee + ₹0 brokerage | ₹500 stated data fee + ₹1,000 brokerage | ₹500 stated data fee + ₹10,000 brokerage | ₹20/executed option order. Data-fee GST unresolved; no current or previous-month credits assumed |
| Kite Personal, another legitimate data source | ₹0 API fee + ₹0 brokerage | ₹0 API fee + ₹1,000 brokerage | ₹0 API fee + ₹10,000 brokerage | External data cost not priced; no Kite live/history data in this tier |
| Dhan with Data API | ₹499 data + ₹0 brokerage | ₹499 data + ₹1,000 brokerage | ₹499 data + ₹10,000 brokerage | Data ₹499 + applicable taxes every 30 days; ₹20/option order. One debit assumed |
| FYERS Standard | ₹0 data/API fee + ₹0 brokerage | ₹0 data/API fee + ₹1,000 brokerage | ₹0 data/API fee + ₹10,000 brokerage | ₹20/option order; Prime and introductory waivers excluded |
| Angel One SmartAPI | ₹0 data/API fee + ₹0 brokerage | ₹0 data/API fee + ₹1,000 brokerage | ₹0 data/API fee + ₹10,000 brokerage | ₹20/F&O order; introductory ₹500/30-day brokerage waiver excluded |
| Upstox standard APIs, eligible October offer | ₹0 API/data fee + ₹0 brokerage | ₹0 API/data fee + ₹500 brokerage | ₹0 API/data fee + ₹5,000 brokerage | Staff-confirmed ₹10/API order through 31 Dec 2026; GTT excluded; offer can change |
| Upstox ordinary ₹20 option rate, alternative | ₹0 API/data fee + ₹0 brokerage | ₹0 API/data fee + ₹1,000 brokerage | ₹0 API/data fee + ₹10,000 brokerage | Standard tariff, shown separately from the dated API offer |
| Shoonya, subscription cost unresolved | ₹0 brokerage; API/data fee not established | ₹250 brokerage; API/data fee not established | ₹2,500 brokerage; API/data fee not established | ₹5 + GST per executed option order. Missing subscription input is not zero |
Brokerage = assumed executed orders × stated option rate: ₹20 gives ₹0/₹1,000/₹10,000; ₹10 gives ₹0/₹500/₹5,000; ₹5 gives ₹0/₹250/₹2,500. Data/API fees are sourced separately from brokerage. Excludes transaction taxes, clearing/account/RMS/dealer fees, server/static-IP costs and paid platform fees. Dhan's 30-day cycle is not a promise of one debit in every calendar month. No lot sizes, premiums or traded quantities are assumed.
Dhan at the middle usage level: a limited subtotal
Same assumptions as the table: 50 executed option orders, one charged 30-day Data API cycle and no introductory discount. Both listed components are before their applicable taxes; other account/trade costs remain outside the example.
- Option brokerage50 × ₹20
- ₹1,000
- One Data API renewalPublished before applicable taxes
- ₹499
- These two components before taxes and other costs
- ₹1,499
Compare access methods as well as the fee
A monthly subscription and an authenticated session have different purposes. The subscription grants the purchased service; the session establishes that the account has authorised access. A paid renewal does not by itself keep an expired session working.
Kite documents a browser login, a returned request token and a server-side token exchange. Upstox describes OAuth 2.0, an authorisation flow in which the customer signs in with Upstox and the app receives a token. Dhan also documents an OAuth-based consent and browser route for individuals. These are provider-specific facts, rather than evidence that every broker uses an identical login routine.
The choice needs to fit the operating routine you can actually maintain. Follow each provider's approved flow and protect the secret and session token. A promise of unattended operation from a third party should be checked against the broker's current session and hosting documentation.
Operating details that can change a shortlist
Primary documentation checked 14 October 2026. Selected details, not a full implementation or regulatory matrix; no authentication or order-placement test.
| Provider or interface | Documented detail | Question to resolve in your design |
|---|---|---|
| Kite | Access token expires at 6 AM the next day unless invalidated earlier; static IP applies to API order placement, while data/orderbook/positions can use any IP | Can the authorised daily login and order-server arrangement be maintained? |
| Upstox | OAuth 2.0 authorisation-code flow; broker handles login rather than a public direct-credential login endpoint | Does the application use the documented redirect and server-side exchange? |
| Dhan | Individual OAuth-based key/secret, consent and browser flow documented | Which documented authentication route and expiry condition will this app use? |
| FYERS | 10 March 2026 notice requires daily two-factor authentication and discontinues continuous refresh-token sessions | Does the planned routine account for the current session requirement? |
| Shoonya | API access is a separate opt-in; account and segment enablement must be checked | Is access actually enabled for the required segment before coding around it? |
Token lifetime is from Kite's user docs, network scope from Zerodha support. Other rows use each provider's own authentication/notice/prerequisite documentation. The regulatory workflow is linked below instead of reconstructing the full rules here.
Use the current framework when assessing an execution route
SEBI's framework is circular SEBI/HO/MIRSD/MIRSD-PoD/P/CIR/2025/0000013 dated 4 February 2025. Its later circular SEBI/HO/MIRSD/MIRSD-PoD/P/CIR/2025/132 dated 30 September 2025 applies the framework and exchange implementation standards to all stock brokers from 1 April 2026.
The static IP guide covers the static IP part. For hosting, order tagging and registration conditions, use the broker's current implementation documents. The inference for this comparison is practical: a code sample or an old integration listing cannot establish that the proposed current execution route is permitted. This is a plain-English source summary, not legal advice.
“will be applicable for all stock brokers”
Source: [25]
An acceptance checklist for the shortlisted interface
One representative data requirement
Specify an instrument, date range, interval and expiry without choosing it for expected profit. Verify the entitlement and returned identity. Shoonya's cited history page documents daily end-of-day candles; it does not establish a deep intraday archive.
Request units and conflicts
Dhan's v2 order table gives 10 requests per second and 7,000 daily, while its product page lists 25 orders per second and 5,000 daily. Preserve that conflict and obtain the applicable limit; do not assign the larger figures a performance score.
Recovery after an uncertain result
Define how submitted instructions will be matched to broker order status and the final trade record. A timeout does not tell the trader whether an order exists. Test only within an authorised setup and document the recovery outcome.
A dated cost record
Keep the actual subscription debit, invoice, offer conditions and executed-order count together. The illustrative table is a starting specification, rather than a replacement for the account's bills.
Review the workflow you chose
For an archive-centred shortlist, the historical-data API comparison has the detailed retention and expired-contract boundaries. For the human operating routine, algo versus manual trading helps identify which decisions remain with the trader.
Use the stated criteria to narrow the required interface, then record which claims were documented, which were tested and which remain unanswered. None of the prices, endpoint names or capacity limits above establishes that automation will make a trading strategy profitable.
Sources
Every figure on this page comes from one of these. Each was checked on the date shown.
- [1]Zerodha Kite API plan FAQ · checked 14 Oct 2026
- [2]Zerodha brokerage tariff · checked 14 Oct 2026
- [3]Dhan Data API renewal FAQ · checked 14 Oct 2026
- [4]Dhan pricing · checked 14 Oct 2026
- [5]DhanHQ Trading APIs overview · checked 14 Oct 2026
- [6]DhanHQ v2 rate-limit table · checked 14 Oct 2026
- [7]FYERS API-fee FAQ · checked 14 Oct 2026
- [8]FYERS Standard/Prime pricing · checked 14 Oct 2026
- [9]Angel One SmartAPI FAQ · checked 14 Oct 2026
- [10]Angel One F&O brokerage · checked 14 Oct 2026
- [11]Upstox standard API overview · checked 14 Oct 2026
- [12]Upstox brokerage tariff · checked 14 Oct 2026
- [13]Upstox staff API-order announcement, 6 October 2026 · checked 14 Oct 2026
- [14]Upstox staff confirmation, 5 October 2026 · checked 14 Oct 2026
- [15]Shoonya option tariff · checked 14 Oct 2026
- [16]Shoonya API prerequisites · checked 14 Oct 2026
- [17]Shoonya daily history documentation · checked 14 Oct 2026
- [18]Upstox historical candles v3 · checked 14 Oct 2026
- [19]Dhan chain documentation · checked 14 Oct 2026
- [20]Kite daily login and token flow · checked 14 Oct 2026
- [21]Upstox OAuth authentication · checked 14 Oct 2026
- [22]Dhan authentication options · checked 14 Oct 2026
- [23]FYERS retail-algo notice, 10 March 2026 · checked 14 Oct 2026
- [24]SEBI retail-algo framework, 4 February 2025 · checked 14 Oct 2026
- [25]SEBI implementation extension, 30 September 2025 · checked 14 Oct 2026
- [26]Zerodha static-IP scope · checked 14 Oct 2026