Skip to content
NEWNaqel Express tracking is now liveTrack now →
TrackParcelTrackParcel API

Multi-carrier tracking,
one API.

Real-time status for 45 Indian couriers in a single request — the same tracking pipeline that powers trackparcel.in itself.

Quick start.

1

Request an API key

There's no self-serve signup yet — keys are issued manually. Contact us with your expected usage and we'll set you up with a key and a plan that fits.

2

Make a request

Send a GET request to /api/v1/track with your tracking number, the carrier, and your key in the x-api-key header.

curl "https://www.trackparcel.in/api/v1/track?awb=V3501635425&carrier=DTDC" \
  -H "x-api-key: YOUR_API_KEY"
3

Read the response

You get back the current status, a full event timeline, and cache metadata — the same data shown on the tracking result page on the site itself.

{
  "success": true,
  "courier": "dtdc",
  "detectedCarrier": "DTDC",
  "fromCache": true,
  "cachedAt": 1783356689223,
  "cacheExpiresIn": 1829662,
  "data": {
    "booking_details": {
      "tracking_number": "V3501635425",
      "status": "Delivered",
      "origin": "GUWAHATI, 781006",
      "destination": "BANGALORE, 562157",
      "actual_delivery": "5 Jun 2026",
      "recipient": "ARINA GOGOI"
    },
    "tracking_details": [
      {
        "date": "5 Jun 2026",
        "time": "16:16:30",
        "location": "BANGALORE - Vidyanagar Cross",
        "activity": "Delivered",
        "remarks": "Successfully Delivered To [ARINA GOGOI]..."
      },
      {
        "date": "5 Jun 2026",
        "time": "11:53:52",
        "location": "BANGALORE - Vidyanagar Cross",
        "activity": "Out for Delivery",
        "remarks": "..."
      }
    ]
  }
}
Authentication.

Every request must include your API key in the x-api-key header. There is no query-param or Bearer-token alternative.

x-api-key: tp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

A missing key returns 401 MISSING_API_KEY; an invalid one returns 401 INVALID_API_KEY. Keys are issued and revoked on request — if yours stops working unexpectedly, contact us before assuming it's a bug.

Endpoint.

GET/api/v1/track
ParamRequiredDescription
awbYesTracking number. Letters, digits, hyphen, underscore only — max 50 characters.
carrierYesExact carrier name — see the supported carriers list below.
Supported carriers.

Pass one of these exact strings as carrier. Values are case-sensitive.

India Postalso accepts "Speed Post"
Delhivery
Bluedart
DTDC
Xpressbees
Ekart / Flipkartalso accepts "Ekart"
Tirupati Courier
Shadowfax
Allcargo Gatialso accepts "Gati"
Trackon
Valmo
ST Courier
Shree Maruti
Shree Anjani Courier
OM Logistics13-digit numeric docket
VRL Logistics10-digit LR number
TCI Express6–10 digit docket number
Safexpress12-digit waybill number
Response fields.

FieldDescription
successWhether the request succeeded. Always check this before reading data.
courierInternal carrier ID (e.g. "dtdc").
detectedCarrierHuman-readable carrier name.
fromCacheTrue if this result came from cache rather than a live scrape.
cachedAtUnix ms timestamp the cached result was stored, or null if freshly scraped.
cacheExpiresInSeconds until this result would be re-scraped on the next request.
data.booking_detailsCurrent status, origin, destination, and delivery dates.
data.tracking_detailsFull event timeline — date, time, location, activity, remarks — oldest or newest first depending on carrier.
Errors.

Errors always return the same shape:

{
  "success": false,
  "error": "NOT_FOUND",
  "message": "No tracking data found for V3501635425"
}
StatuserrorWhen
400INVALID_AWBawb is missing, over 50 characters, or contains characters other than letters/digits/hyphen/underscore
400CARRIER_REQUIREDcarrier param is missing
400UNKNOWN_COURIERcarrier value doesn't match any supported carrier
401MISSING_API_KEYx-api-key header not sent
401INVALID_API_KEYx-api-key value isn't a recognised, active key
404NOT_FOUNDthe carrier has no tracking data for this AWB — wrong/expired/mistyped number
429RATE_LIMITEDtoo many requests from this key in a short window — back off and retry
429QUOTA_EXCEEDEDthis key has used its monthly call allowance — resets at the start of the next month
429UPSTREAM_RATE_LIMITEDthe carrier is throttling requests — honor Retry-After before trying again
500SCRAPER_ERRORthe carrier's own system errored or the scrape otherwise failed unexpectedly
503CARRIER_DISABLEDthis carrier is temporarily disabled on our side
503CARRIER_UNAVAILABLEthe carrier is failing consistently right now — try again shortly
504TIMEOUTthe carrier's system took too long to respond
Rate limits.

Two ceilings apply, both set by your plan: a per-minute rate limit and a monthly call allowance. Exceeding either returns 429 with a Retry-After header — RATE_LIMITED for the per-minute one, QUOTA_EXCEEDED for the monthly one.

PlanPer minuteCalls per month
Trial10250
Starter303,000
Growth6015,000
Scale12075,000
Enterprise300Unmetered

Every response carries X-Quota-Limit, X-Quota-Used and X-Quota-Reset, so you can watch your own budget rather than discover the ceiling by hitting it. The allowance resets at the start of each calendar month, UTC. Need a higher one? Ask us.

Usage.

GET/api/v1/usage

Check your plan, limits, and usage without placing a tracking call. Same x-api-key header as /api/v1/track, and it never counts against your monthly allowance.

curl "https://www.trackparcel.in/api/v1/usage" \
  -H "x-api-key: YOUR_API_KEY"

Response:

{
  "success": true,
  "plan": "growth",
  "rateLimitPerMinute": 60,
  "monthlyCallQuota": 15000,
  "used": 4213,
  "remaining": 10787,
  "resetsAt": "2026-09-01T00:00:00.000Z",
  "totalRequests": 88210,
  "lastUsedAt": "2026-08-19T03:41:00.000Z"
}

remaining and monthlyCallQuota are null on an unmetered plan. This endpoint has its own, more generous rate limit and stays reachable even if your key has been paused, so you can always see why.