Gov APIcestat.gov.in ↗
Access recent daily, interim, and final orders from India's CESTAT tribunals. Returns case numbers, party details, bench, order date, and PDF links.
What is the Gov API?
The CESTAT API exposes 2 endpoints for retrieving recent orders published by India's Customs, Excise and Service Tax Appellate Tribunal. list_daily_orders returns daily, miscellaneous, and interim orders from the last 7 days, while list_final_orders covers final rulings over the same window. Each record includes 5 response fields: case number, party details, order date, bench location, and a direct PDF link.
curl -X GET 'https://api.parse.bot/scraper/96baa680-043a-4a37-87ac-f16172e57444/list_daily_orders?page=1&bench=AHMEDABAD&page_size=15' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace cestat-gov-in-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: CESTAT Orders SDK — bounded, re-runnable; every call capped."""
from parse_apis.cestat_gov_in_api import Cestat, Bench, ParseError
client = Cestat()
# List recent daily orders from the Delhi bench
for order in client.orders.list_daily(bench=Bench.DELHI, limit=3):
print(order.case_number, order.party_details, order.order_date)
# List recent final orders from Mumbai bench
for order in client.orders.list_final(bench=Bench.MUMBAI, limit=3):
print(order.case_number, order.bench, order.pdf_link)
# Get just one order from Bangalore daily orders
item = client.orders.list_daily(bench=Bench.BANGALORE, limit=1).first()
if item:
try:
print(item.case_number, item.order_date, item.pdf_link)
except ParseError as e:
print("error:", e)
print("exercised: orders.list_daily, orders.list_final")
Retrieve recent daily, miscellaneous, and interim orders from a specified CESTAT bench. Orders are from the last 7 days, sorted most-recent first. Results are paginated server-side.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results. |
| bench | string | CESTAT bench location. |
| page_size | integer | Number of orders per page (1–100). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"orders": "array of order records with case_number, party_details, order_date, bench, pdf_link",
"page_size": "integer page size used",
"total_pages": "integer total pages available",
"total_records": "integer total matching orders in the date window"
},
"sample": {
"data": {
"page": 1,
"orders": [
{
"bench": "DELHI",
"pdf_link": "https://cestat.gov.in/weborders/file/delhi/569490",
"order_date": "24/07/2026",
"case_number": "C/51506/2025",
"party_details": "MANISH MAINGI vs New Delhi",
"serial_number": 1
}
],
"page_size": 10,
"total_pages": 21,
"total_records": 206
},
"status": "success"
}
}About the Gov API
Endpoints and Coverage
Both list_daily_orders and list_final_orders query orders issued within the last 7 days across CESTAT benches. Results are sorted most-recent first and are paginated. Use the page and page_size parameters (1–100 records per page) to walk through result sets. The total_records and total_pages fields in each response let you build accurate pagination without over-fetching.
Filtering by Bench
Both endpoints accept an optional bench parameter, which filters results to a specific CESTAT bench location — for example, Delhi, Mumbai, Chennai, or Kolkata. Omitting bench returns orders across all benches within the 7-day window. The bench field is also returned on each order object, so you can further classify results client-side if you query without filtering.
Response Shape
Each order record in the orders array carries: case_number (the tribunal's assigned docket identifier), party_details (names of appellant and respondent), order_date, bench (the issuing bench location), and pdf_link (a direct URL to the order document). The distinction between daily/interim and final orders is maintained by using separate endpoints rather than a type flag within a single response.
Data Window and Freshness
The 7-day rolling window means this API is suited for monitoring recent tribunal activity rather than historical research. Orders older than 7 days are not returned by either endpoint. If you need to track a specific case over time, you should store returned records incrementally using scheduled calls.
The Gov API is a managed, monitored endpoint for cestat.gov.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cestat.gov.in changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official cestat.gov.in API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor new CESTAT final orders relevant to a specific customs or excise classification, using the
benchfilter andpdf_linkto retrieve documents. - Build a daily digest of interim and miscellaneous orders for legal teams by polling
list_daily_orderseach morning. - Track party-level exposure to tribunal decisions by searching
party_detailsfields in returned order records. - Aggregate bench-wise order volume across CESTAT locations by iterating through
benchvalues and recordingtotal_records. - Maintain a local archive of final orders by paginating
list_final_orderswithpageandpage_sizeand storingpdf_linkURLs. - Alert compliance teams when new orders are issued on cases involving specific parties by matching
party_detailsacross daily pulls.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does cestat.gov.in have an official developer API?+
What does `list_final_orders` return compared to `list_daily_orders`?+
list_final_orders returns concluded rulings — orders that dispose of an appeal on its merits. list_daily_orders returns daily cause-list orders, miscellaneous matters, and interim relief orders. Both share the same response shape: case_number, party_details, order_date, bench, and pdf_link. Separate endpoints are used because CESTAT publishes these as distinct order categories.Can I retrieve orders older than 7 days?+
Is there a way to search by case number or party name?+
bench, page, and page_size. Filtering by case_number or party_details text is not a supported parameter on either endpoint. You can fork this API on Parse and revise it to add a case-number or party-name search endpoint.How should I handle pagination when collecting all orders in the 7-day window?+
page_size to 100 to minimize round trips. The response returns total_pages and total_records on the first call, so you can determine how many subsequent page increments are needed. Increment page until you reach total_pages. Both endpoints use server-side pagination, so skipping ahead with a high page value without first checking total_pages may return an empty orders array.