TrackParcelTrackParcel API

Multi-carrier tracking,
one API.

Real-time status for 15+ 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 uswith 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
FedEx Indiaalso accepts "FedEx"
Shree Maruti
Shree Anjani Courier
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
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.

Each API key is limited to 20 requests per rolling 60-second window. Exceeding it returns 429 RATE_LIMITED with a Retry-After header. This is a backstop against runaway polling loops, not a billing gate — if your integration genuinely needs a higher ceiling, ask us.

Questions?

Need a key, a higher rate limit, or a carrier we don't support yet? Reach out and we'll sort it out.

Contact us →