Shadowfax APItracker.shadowfax.in ↗
Track Shadowfax shipments by AWB number, validate tracking IDs, and retrieve blog posts and header announcements via a structured JSON API.
What is the Shadowfax API?
This API exposes 4 endpoints for interacting with Shadowfax shipment and website data. The track_shipment endpoint resolves any AWB number to a current tracking status and internal unique_code, while validate_tracking_id lets you pre-check an AWB before requesting full details. Two additional endpoints cover Shadowfax blog content and active site-header announcements, all returning structured JSON.
curl -X GET 'https://api.parse.bot/scraper/e0c1a6cc-cef2-4ffe-95f5-4ace8bd7b83f/validate_tracking_id?awb_number=SF12345678' \ -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 tracker-shadowfax-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.
from parse_apis.shadowfax_tracking_and_content_api import Shadowfax, Shipment, TrackingResult, BlogPost, Announcement, InvalidAwb
client = Shadowfax()
# Validate a shipment AWB number
validation = client.shipments.validate(awb_number="SF99887766XX")
print(validation.valid, validation.message, validation.unique_code)
# Track a shipment to get full status details
tracking = client.shipments.track(awb_number="SF99887766XX")
print(tracking.valid, tracking.status, tracking.unique_code)
# List blog posts (auto-paginated)
for post in client.blogposts.list(limit=5):
print(post.title, post.category, post.date, post.slug)
# List active announcements
for announcement in client.announcements.list():
print(announcement)
Validate whether a given AWB number corresponds to a known Shadowfax shipment. Returns a boolean validity flag and, when valid, the internal unique_code that identifies the shipment downstream. Useful as a lightweight pre-check before requesting full tracking details.
| Param | Type | Description |
|---|---|---|
| awb_numberrequired | string | Shipment AWB/Tracking ID to validate. |
{
"type": "object",
"fields": {
"valid": "boolean indicating whether the AWB number is valid",
"message": "string with validation result message",
"unique_code": "string unique code for the shipment (present when valid is true, null otherwise)"
},
"sample": {
"data": {
"valid": false,
"message": "Invalid AWB Number",
"unique_code": null
},
"status": "success"
}
}About the Shadowfax API
Shipment Tracking
The track_shipment endpoint accepts an awb_number string and returns a valid boolean, a status string reflecting the current delivery state, a message describing that state, and the shipment's unique_code. For AWB numbers that don't resolve to a known shipment, valid is false, status is null, and unique_code is null. If you want a lightweight check before making the full tracking call, validate_tracking_id takes the same awb_number input and returns only valid, message, and unique_code — useful for input validation without incurring the cost of a full status fetch.
Blog Posts
The get_blogs endpoint returns a paginated list of Shadowfax blog posts. Each page contains up to 10 post objects covering fields such as title, slug, image URL, category, full HTML content, and publication metadata. Pagination is controlled by the page parameter (1-based). The response includes a total count of all available posts and a nextPage integer; when nextPage is -1, no further pages exist. The error boolean signals whether the request encountered a retrieval problem.
Header Announcements
The get_header_config endpoint takes no inputs and returns the data array of currently active header announcements on the Shadowfax website. When no announcements are configured, data is an empty array. This endpoint is useful for monitoring real-time promotional or operational notices published at the top of the Shadowfax site.
The Shadowfax API is a managed, monitored endpoint for tracker.shadowfax.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tracker.shadowfax.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 tracker.shadowfax.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?+
- Poll
track_shipmentto push delivery status updates into an order management system. - Use
validate_tracking_idto verify customer-submitted AWB numbers before accepting them in a support ticket form. - Aggregate Shadowfax blog posts by category using the
slugandcategoryfields fromget_blogs. - Monitor
get_header_configto detect new site-wide announcements relevant to logistics operations. - Build a shipment lookup tool that surfaces
statusandmessageto end customers via a tracking page. - Paginate through
get_blogsusing thenextPagefield to mirror Shadowfax content into an internal knowledge base. - Audit AWB validity in bulk by batching calls to
validate_tracking_idacross a list of tracking numbers.
| 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 Shadowfax have an official public developer API?+
What does `track_shipment` return versus `validate_tracking_id`?+
validate_tracking_id returns only three fields — valid, message, and unique_code — and is intended as a pre-check. track_shipment goes further: it resolves the AWB to a unique_code and also returns the current status string and a descriptive message. Both return valid=false with null fields for unrecognized AWB numbers.Does the API return full shipment event history or only the current status?+
track_shipment currently returns a single status value representing the latest delivery state, not a timeline of events. The API covers current status, AWB validity, and the internal unique_code. You can fork it on Parse and revise to add an endpoint that surfaces a full event history if that data becomes accessible.How does pagination work for `get_blogs`?+
page parameter is 1-based and optional. Each response includes a total field for the overall post count and a nextPage integer. When nextPage equals -1, you have reached the last page. Each page returns up to 10 posts.Does the API expose individual blog post content by slug or ID?+
get_blogs, which includes full HTML content inline for each post in the list. There is no dedicated single-post lookup endpoint. You can fork it on Parse and revise to add a by-slug endpoint for fetching an individual post directly.