KlinesAPI is a high-speed REST API that delivers corporate-action adjusted end-of-day (EOD) OHLCV data for every NSE instrument since 2010.
It includes 27+ chainable technical indicators, supports full-market screening in a single query, and updates daily by 10 PM IST.
Designed for algorithmic traders and researchers who need reliable, clean historical data without the hassle of manual adjustments or rate limits.
trending_upData from 2010
bar_chart27+ Indicators
all_inclusiveAll NSE instruments
updateDaily by 10 PM IST
verified Solves Real Problems
speed
Slow API and high limits?
If your current workflow feels sluggish because Google Finance, Yahoo Finance, or a broker endpoint keeps slowing down or rate limiting, KlinesAPI gives you an async-ready, high-speed REST API with 1000 free requests a month. That means faster pulls, fewer bottlenecks, and a cleaner pipeline for screening and backtesting.
avg_time
Data is available only for few years?
Many market data tools only give a short window of history, which makes long horizon backtests incomplete. KlinesAPI provides full data since 2010, so you can test across multiple market cycles, compare regime changes, and build strategies with deeper historical context.
raw_off
Unadjusted raw data making analysis a mess?
Raw EOD series can become misleading when corporate actions are ignored. KlinesAPI provides bonus, rights, splits, and demerger adjusted data, so historical price action stays usable for analysis. Dividends are not adjusted because the impact is negligible, which keeps the series cleaner without unnecessary distortion.
savings
High API costs from other APIs?
Some providers push pricing into expensive monthly plans that are hard to justify for research, prototyping, or small production workloads. KlinesAPI is designed to keep the spend controllable with a request-based model, so your cost matches actual usage instead of forcing a heavy subscription.
manage_search
Unable to scan the full market quickly?
A single query can scan all NSE instruments, so you can find opportunities across the entire market without stitching together dozens of manual pulls. That makes screening simpler, faster, and much easier to automate.
auto_awesome What's Included
corporate_fare
Corporate-action adjusted prices
Every dataset accounts for splits, bonus issues, rights offerings, and demergers, so your series stays continuous and suitable for analysis.
label_off
Live symbol change tracking
Tickers that get renamed just work. Updates happen daily so backtests and screeners do not break silently when symbols change.
functions
27 chainable indicators
SMA, EMA, WMA, RMA, TEMA, HMA, VWAP, pivot levels, Heikin-Ashi, and more. Chain indicators, offset them by days, and build complex multi-condition screens in a single request.
speed
Async and high-throughput pulls
Built for concurrent async requests, so you can pull hundreds of symbols at once without the slowdown and failure cycles common in spreadsheet-based workflows.
savings
24-hour cache at no cost
Identical queries within 24 hours are served from cache and charged zero credits, which makes repeated analysis in the same day cheaper and faster.
receipt_long Pricing
Recharge and request usage are shown together so the pricing stays easy to read.
Every ₹1 recharge gives 2 paid requests or 50 credits as per your requirement, while the free monthly request allowance is included in the plan itself.
Credits remain separate from requests and never expire.
workspace_premium Recharge plans
Plan
Recharge Amount
Credits
Requests (Include both paid and free here itself)
Other perks
Notes
Test user
₹1 - ₹999
[50 credits per ₹1 + 1000 free monthly requests] or
2 paid requests per ₹1
Access to all endpoints and indicators
Max 3 test recharges per lifetime. After that, a minimum ₹1000 recharge is required to continue as a normal user.
Normal plan
<₹5000
[50 credits per ₹1 + 1000 free monthly requests] or
2 paid requests per ₹1
All endpoints and indicators. Bug reports rewarded with 7500 credits. Standard queue support.
Best for steady usage below the super-tier threshold.
Super plan
>=₹5000
[50 credits per ₹1 + 2000 free monthly requests] or
2 paid requests per ₹1
All normal benefits. Priority support queue. SLA delays credit 7500 per day. Bug reports rewarded with 25000 credits.
Best for higher volume use.
calculate Consumption calculation
Credits and Requests are converted back and forth automatically to meet JIT approach.
Base deduction — All-symbol scan (no symbol filter)
Credits = 42 × trading days in range × multiplier. Example: 1 day × 1.2 multiplier = 50.4 credits = ₹1.01
Multipliers
Operational cost multiplier — 0.01 per filter.
Compute cost multiplier (CCM) — based on indicator complexity. Both multipliers stack multiplicatively on the base.
Grace periods
Identical queries within 24 hours are served from cache at no charge.
Grace applies to credits only. Every request counts toward the monthly request limit regardless of grace.
Request deduction
1 request is deducted for every query irrespective of grace period.
help
Frequently Asked Questions
tune
How is the data adjusted in KlinesAPI?
Prices are adjusted for splits, bonus issues, rights offerings, and demergers
to keep the series continuous. Dividends are not adjusted as their impact is
typically negligible for most backtesting needs.
analytics
What indicators are available?
27+ indicators including SMA, EMA, WMA, RMA, TEMA, HMA, VWAP, pivot levels,
and Heikin-Ashi. They are fully chainable with offsets.
payments
How much does it cost?
1000 free requests per month. Additional usage is recharge-based:
₹1 = 2 paid requests or 50 credits. Super plan (₹5000+) gets
2000 free requests/month + priority support.
warning
Is the data suitable for live trading?
No. The data is intended for research and backtesting only. It should not be
used to make actual investment decisions.
info Important Notes
do_not_disturb
All recharges are non-refundable regardless of whether credits or requests are consumed.
Credits and requests do not expire. Be advised to pay only on just-in-time basis.
science
Data is adjusted with reasonable accuracy and is intended for research and backtesting only.
Results should not be used to make investment decisions.
DSL Guide
The complete KlinesAPI DSL reference used by columns=,
expr=, variables, custom functions, and scanner conditions.
Formulas and function definitions below are taken from the same definitions used by the Builder.
functions0 DSL functions
database0 Raw columns
analytics0 Indicators & metrics
scheduleOffsets supported
codeDefinitions & Syntax
table_viewRaw Columns
analyticsIndicators & Metrics
functionsDSL Functions
tuneOperators
scheduleTemporal Model & Offsets
URL Builder
Compose your API request visually. Copy the generated URL directly into Python environment, Google Sheets, Excel, or any HTTP client.
folder_open
No blocks yet. Click "New Block" to create one.
Untitled Block
robot_2Encodedunfold_more
expand_more
api Endpoint
my_location Query Target
date_range Date & Mode
view_column Columns
filter_alt Simple Filters
functions Advanced Filters
tune Output & Pagination
science Test Strategy
data_object
No variables defined yet. Click "Define" to create one.
functions
No custom functions defined yet.
Create reusable functions such as zindex(x,y,z), then use them in your scanner condition.
show_chartCharts
psychology
Fear & Greed Index
——
prev—
wk ago—
Symbol or Index
query_stats
Select a symbol or index above, then click Load Chart.
candlestick_chart—
—
—
Δ—
O—
H—
L—
V—
show_chart
Z-Index Close
—
bar_chart
Z-Index Volume
—
bolt
Z-Index Activity
—
Not applicable for indices.
Hot Picks
Hot Picks surfaces NSE instruments that meet configured screening conditions
at a given scan time. Live fetches the most recent snapshot; Historical lets
you replay any past scan with optional backtest delta.
toll1000 credits are deducted per fetch.
boltLive Scan
historyHistorical Scan
Date
Each date is a separate request under the hood (Epick's own
limit), fetched in parallel — not one at a time.
Time
Freshly Picked?
Condition Filter
Condition IDs (comma-separated)
Contains: a row matches if its CONDITIONS_MET
includes at least all of these ids (extras allowed) — e.g. 1,2
matches a row that met 2,6,1,8.
Equals: a row matches only if its CONDITIONS_MET
is exactly this set, order doesn't matter — e.g. 1,2,6,8 matches
2,6,1,8 but not 1,2,6.
Backtest
Number of Days
scienceLabs
Return Method
Bake Strategy for X day. Enter
No strategy queued yet. Configure a query in Builder
(advanced filter, target = all) or run a scan in Epick,
then tap "Test Strategy" / "Test in Labs".
linkStrategy Query
Read only
upload_fileUpload Strategies
Excel columns: Strategy Name (optional — rows sharing
a name are scored together), Stocks or Indices
(mandatory), Symbol (mandatory), Date
(mandatory).
No file selected.
local_fire_departmentMulti-Day Epick Scan
Strategy Grouping
Group Conditions: the exact set a symbol met together
(e.g. 0,2,4,11,12,13) is one strategy — testing unique combinations.
Each Condition Separately: every individual condition
id is its own strategy, so one symbol can feed several strategies at
once. Re-grouping is instant — it never re-fetches from Epick.
Epick only accepts one day per request, so each date in this range is
fetched in parallel batches. (You can also start a scan directly
from the Epick section itself and hand the picks off here already
fetched.)
Time
hourglass_topQueued Epick Scan
Queued…
hourglass_topRunning Strategy Test
Queued…
military_techOverall Strategy Score
—
—
table_viewCross-Verify
Raw rows on sheet 1, one sheet per calculation step (returns grid,
breadth/base, range buckets, weight/alpha, day contribution, final score).
grid_viewPer-Day Score
table_viewCross-Verify
One row per signal on the returns-grid sheet, one sheet per
calculation step (breadth/base, range buckets, weight/alpha, day
contribution) — every strategy stacked together with a Strategy
column, so it's one workbook, not one per strategy.
In your email, include a comprehensive note outlining your intended use case. Specify the average number of URL requests per month and any additional usage details. This helps determine the most suitable pricing plan for you.
api Endpoint
Base URL
—
NIFTY
SENSEX
my_location Query Target
All Symbols
Multi Symbols
Single Symbol
Instrument filter
instrument=
Industry filter
industry=
Instrument filter
instrument=
Industry filter
industry=
All Indices
Multi Indices
Single Index
Returns Fear & Greed Index (klinesapi exclusive) — columns: TRADEDATE, XFGI, VF, FGI. Mutually exclusive with market indices.
No query target for this endpoint.
date_range Date & Mode
Date Range
Last N Days
Next N Days
view_column Columns
Ranges expand server-side; inclusive and can span historical or forward offsets.
filter_alt Add Simple Filter
Filters on raw database columns at SQL level.
For metric-based conditions, use Advanced Filters.
>
<
≥
≤
=
≠
functions Advanced Filters (expr=)
Expression (type naturally — suggestions appear as you write)
Operators
>
<
≥
≤
==
!=
+
-
*
/
**
%
&&
||
(
)
backspace
CLR
Raw columns (tap for offset options)
Metrics & values
Variables
data_objectDefine Let Variable
Assign a short name to a reusable expression. Use
#name in expr=, columns=, or custom function bodies.
References stay linked to the variable instead of copying its expression.
Operators
+
-
*
/
**
%
&&
||
(
)
backspace
CLR
Raw columns (tap for offset options)
Metrics & values
Variables
functionsDefine Function
Create a reusable DSL function. Example: zindex(x,y,z) computes one expression that you can call from your scanner condition.
Functions are automatically included before expr= when the request is built.
Quick insert
tune Output & Pagination
CSV output
filetype=csv
Pagination:
When fetching large datasets page by page, pass the date from the last row of your previous response as
last_date.
When scanning all symbols (no symbol filter), also pass
last_symbol.