Kurnool Bazar Result & Chart API
Free JSON access to live results, market lists, chart history and Starline — the same data this site shows.
The API is currently switched off. The documentation below describes it for when it is enabled.
Base URL
https://kurnool.vip/api/v1
Authentication
No key is needed right now. If you are given one (for a higher limit, or because key-only mode is switched on later), send it as a request header — either of these works:
X-API-Key: YOUR_KEY
Authorization: Bearer YOUR_KEY
A key in the URL does not work. https://kurnool.vip/api/v1/results?key=YOUR_KEY will be rejected:
query strings end up in server access logs, browser history and Referer headers, so a key sent that way
is effectively public. It has to be a header.
Keys look like kg_ followed by 36 hex characters. Treat one like a password: keep it on your server,
never in a web page, mobile app or anything a user can view the source of. If a key leaks, ask us to delete it and
issue a new one — that takes effect immediately.
Endpoints
1. Today's results
GET https://kurnool.vip/api/v1/results
Every market's current result (open_panna-jodi-close_panna, e.g. 137-16-268; *** = pending, HOLIDAY on holidays), open/close times, status, plus today's Starline slots.
{
"date": "15-09-2026",
"time": "18:42",
"markets": [
{ "name": "KALYAN", "slug": "kalyan", "result": "378-89-199", "jodi": "89",
"open": "03:40 PM", "close": "05:40 PM", "status": "closed", "holiday": false },
{ "name": "MAIN BAZAR", "slug": "main-bazar", "result": "***-**-***", "jodi": "**",
"open": "09:35 PM", "close": "11:59 PM", "status": "upcoming", "holiday": false }
],
"starline": [ { "time": "11:00 AM", "result": "270-9" } ]
}
status is one of upcoming, running, closed or holiday.
Note the date is the result day: a market that declares after midnight still reports the day it opened on.
2. Market list
GET https://kurnool.vip/api/v1/markets
Name, slug (use it in the chart endpoint), timings and current status of every market.
{
"markets": [
{ "name": "KALYAN", "slug": "kalyan", "open": "03:40 PM", "close": "05:40 PM",
"status": "closed", "holiday": false }
],
"count": 26
}
3. Chart history
GET https://kurnool.vip/api/v1/chart/{slug}?days=90
Per-day rows for one market. days: 1–1100 (default 90). Get valid slugs from /markets.
GET https://kurnool.vip/api/v1/chart/time-bazar?days=30
{
"market": "TIME BAZAR",
"slug": "time-bazar",
"days": 30,
"rows": [
{ "date": "15-09-2026", "open_panna": "378", "jodi": "89",
"close_panna": "199", "result": "378-89-199" }
]
}
4. Starline
GET https://kurnool.vip/api/v1/starline?days=7
Today's slots plus up to 30 days of history.
{
"date": "15-09-2026",
"today": [ { "game": "Kurnool Starline", "time": "11:00 AM", "result": "270-9" } ],
"history": [ { "date": "14-09-2026",
"results": [ { "game": "Kurnool Starline", "time": "11:00 AM", "result": "145-0" } ] } ]
}
Code examples
Each one fetches today's results. Replace YOUR_KEY with the key you were given.
curl
curl -H "X-API-Key: YOUR_KEY" "https://kurnool.vip/api/v1/results"
JavaScript (server-side — Node, not the browser)
const res = await fetch("https://kurnool.vip/api/v1/results", {
headers: { "X-API-Key": "YOUR_KEY" }
});
const data = await res.json();
for (const m of data.markets) {
console.log(m.name, m.result, m.status);
}
Do not put a key in browser JavaScript — anyone can read it. Call this API from your own server and pass the result on to your pages.
PHP
$ch = curl_init("https://kurnool.vip/api/v1/results");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: YOUR_KEY"],
CURLOPT_TIMEOUT => 15,
]);
$data = json_decode((string)curl_exec($ch), true);
curl_close($ch);
foreach ($data["markets"] as $m) {
echo $m["name"] . " " . $m["result"] . "\n";
}
Python
import requests
r = requests.get("https://kurnool.vip/api/v1/results",
headers={"X-API-Key": "YOUR_KEY"}, timeout=15)
r.raise_for_status()
for m in r.json()["markets"]:
print(m["name"], m["result"], m["status"])
Android (OkHttp)
Request req = new Request.Builder()
.url("https://kurnool.vip/api/v1/results")
.addHeader("X-API-Key", "YOUR_KEY")
.build();
The same warning applies: a key shipped inside an APK can be extracted. Proxy the call through your own server.
Responses & errors
Success is always HTTP 200 with the JSON body described above. CORS is open (Access-Control-Allow-Origin: *).
Any error returns the matching status code and {"error": "..."} — check the status code, not the body shape.
| Code | Meaning | What to do |
|---|---|---|
| 401 | Missing, invalid or disabled key | Send X-API-Key as a header. A key in the URL is ignored and gives this error. |
| 403 | The API is switched off on this site | Nothing you can fix at your end — contact us. |
| 404 | Unknown market slug or endpoint | Take slugs from /markets; check the URL spelling. |
| 429 | Daily limit reached (1000/day) | Cache and poll less often, or ask for a higher limit. |
Every request counts toward the limit, including ones that return an error, so do not retry a 401 or 404 in a loop — fix the request instead. A 429 resets at midnight Asia/Kolkata.
Webhooks (push updates)
Instead of polling, we can push updates to your server: register a callback URL with us and you will receive a JSON POST within seconds of every change.
- Events:
result.declared,result.cleared,starline.declared,test.ping(the event name is also sent as anX-KG-Eventheader). - Payload:
{"event","site","sent_at","market":{"name","slug","oid"},"half","result","jodi","date"}(starline events carrygame,time,result). - Signature: every request carries
X-KG-Signature: sha256=HMAC_SHA256(rawBody, your_secret)— verify it before trusting the payload. - Your endpoint should respond with HTTP 2xx within a few seconds; failures are recorded and repeated failures may get the hook disabled.
To register a webhook contact us with your callback URL.
Fair use
Poll /results at most once per minute; chart history rarely changes, cache it for a day. Heavy or commercial use, or a higher limit, needs an API key — contact us. Data is provided as-is for information; see the disclaimer.