A read-only JSON API that gives your website or app the same results Kurnool Bazar shows: today's board for every market, full jodi and panel chart history, market timings, and a change feed. If you register a webhook, every open, close and correction is pushed to your server the moment it is declared.
Base URL: https://kurnoolbazar.com/api/v1
Get a key: message Telegram or email kurnoolbazar.com1@gmail.com and tell us the site or app the key is for.
Send your key in the X-API-Key header (preferred) or as ?key=. Requests without a valid key get
401; a disabled key gets 403.
curl -H "X-API-Key: kb_your_key_here" https://kurnoolbazar.com/api/v1/results
| Endpoint | What you get |
|---|---|
GET /results | Today's board for every market: open panna, jodi, close panna, status (pending, open, closed), declared times, chart links, plus the golden ank. |
GET /results/{slug} | One market, e.g. /results/kurnoolmorning. |
GET /chart/{slug}?from=YYYY-MM-DD&to=YYYY-MM-DD | Chart history, one row per day (open panna, jodi, close panna). Default: the last 30 days. At most 366 days per call. |
GET /markets | All markets with their slug, open and close times and chart links. |
GET /latest?since={id} | Change feed: every open, close and correction as a numbered event. Poll with the last id you saw and you only receive what is new. |
/results/kurnoolmorning{
"ok": true,
"result": {
"id": 1,
"market": "KURNOOL MORNING",
"slug": "kurnoolmorning",
"date": "2026-09-28",
"open_time": "10:00 AM",
"close_time": "11:00 AM",
"open_panna": "237",
"open_digit": "2",
"close_digit": "0",
"close_panna": "578",
"jodi": "20",
"result": "237-20-578",
"status": "closed",
"open_declared_at": "2026-09-28T10:12:40+05:30",
"close_declared_at": "2026-09-28T11:09:05+05:30",
"jodi_chart": "https://kurnoolbazar.com/jchart/kurnoolmorning.php",
"panel_chart": "https://kurnoolbazar.com/pchart/kurnoolmorning.php"
},
"generated_at": "2026-09-28T11:15:03+05:30"
}
While a half is not declared its fields are null and result shows stars, e.g. "237-2*-***".
The board resets every morning at 06:15 IST; until then date is still the previous market day, which is how
results declared after midnight (Main Bazar, Main Milan) stay on the right day.
/chart/kalyan?from=2026-09-01&to=2026-09-07{
"ok": true, "market": "KALYAN", "slug": "kalyan", "from": "2026-09-01", "to": "2026-09-07", "count": 6,
"rows": [
{ "date": "2026-09-01", "open_panna": "489", "open_digit": "1", "close_digit": "1", "close_panna": "146", "jodi": "11", "result": "489-11-146" },
...
]
}
/latest?since=1240{
"ok": true, "since": 1240, "count": 2, "last_id": 1242,
"events": [
{ "id": 1241, "event": "open", "occurred_at": "2026-09-28T10:12:40+05:30", "result": { "market": "KURNOOL MORNING", "result": "237-2*-***", ... } },
{ "id": 1242, "event": "close", "occurred_at": "2026-09-28T11:09:05+05:30", "result": { "market": "KURNOOL MORNING", "result": "237-20-578", ... } }
]
}
Event types: open, close and correction (a declared value was changed). Store last_id and pass it as since next time.
Give us an HTTPS URL and we POST every event to it as JSON within a second of the result being declared. Answer with any
2xx status within 5 seconds; anything else is retried after 1, 5, 15, 60 and 360 minutes.
POST https://your-site.com/hook
Content-Type: application/json
X-KB-Event: close
X-KB-Delivery: 8812
X-KB-Signature: sha256=3f1cā¦
{ "id": 8812, "event": "close", "sent_at": "2026-09-28T11:09:05+05:30",
"data": { "market": "KURNOOL MORNING", "slug": "kurnoolmorning", "result": "237-20-578", ... } }
Every delivery is signed with your key's webhook secret (shown with your key). Verify it before trusting the data:
// PHP
$body = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $body, $yourSecret);
if (!hash_equals($expected, $_SERVER['HTTP_X_KB_SIGNATURE'] ?? '')) { http_response_code(401); exit; }
$delivery = json_decode($body, true); // $delivery['data']['result'] etc.
The data object is exactly one item of /results. Use the delivery id to ignore a repeat if a retry ever arrives twice.
ETag. Send it back as If-None-Match and you get 304 Not Modified with no body when nothing changed, which makes polling every few seconds cheap.429; slow down and retry.{"ok": false, "status": 404, "error": "Unknown market 'xyz'. See /api/v1/markets for the list."}© 2011 - 2026 kurnoolbazar.com
About us | Contact us | Privacy & policy | Terms