Bulk Package Tracking, CSV Export & Batch Tracking API (25 to 10,000+ Shipments)
Operations managers, 3PL teams, e-commerce fulfillment leads, and freight audit analysts frequently need to check 25, 100, or 10,000+ tracking numbers at once—whether auditing weekly carrier SLAs, resolving a backlog of open orders, or monitoring in-transit shipments across multiple carriers.
With lastscanned, you can run bulk package tracking without writing a single line of code in our Web UI, or automate batch lookups programmatically via GET /v1/track?numbers=... and POST /v1/watches.
4 Ways to Track Shipments in Bulk
| Workflow | Best For | Max Numbers per Action | Exports & Alerts | Link / Endpoint |
|---|---|---|---|---|
| 1. Web UI Dashboard Watches (No Code) | Ongoing monitoring of active open orders with automatic background polling | Paste up to 100 tracking numbers per batch (unlimited batches) | Live status table (pending, in_transit, out_for_delivery, delivered, exception), carrier/label overrides, optional Webhook push | app.lastscanned.com/watches |
| 2. Bulk Tracking CSV & SLA Auditor (No Code) | One-off spreadsheet audits, carrier SLA checks, and CSV exports | Paste multi-line tracking numbers (tracking_number or carrier,tracking_number) | One-click CSV Export (carrier, status, sub_status, origin, destination, transit_days, delivered_at, last_event) | /tools/bulk-tracking-auditor |
3. Instant 25-Number Credit Pack ($0.50) | Ad-hoc batch checks with zero monthly subscription | 25 live lookups per $0.50 pack (lsk_pack_... token issued immediately after Stripe checkout) | Works across Web UI tools, GET /v1/track, and MCP | /lookup |
4. Synchronous Batch API (GET /v1/track?numbers=...) | ERP, WMS, OMS, and scheduled cron jobs | Up to 25 comma-separated numbers per HTTP call (parallelizable to 10,000+ numbers) | Normalized JSON array with full events[], origin, destination, and subStatus | GET https://api.lastscanned.com/v1/track?numbers=... |
1. No-Code Ongoing Bulk Monitoring: Web UI Dashboard Watches (app.lastscanned.com/watches)
If your operations or support team wants to paste a list of open tracking numbers and watch them move to delivered or exception without writing code:
- Sign in at
app.lastscanned.com/watches. - Paste up to 100 tracking numbers into the Add watches box (one per line or comma-separated):
9400111899223847162534 1Z9999999999999999 UUS5CN5366140981990 LP00592148291048 817817302 - (Optional) Select a specific carrier (for example
UniUni,SpeedX,Yanwen,XPO LTL, orCentral Transport) or leave it on Auto-detect, and attach an order label (e.g.,"May Wholesale Batch #4"). - Click Watch. Every tracking number is queried immediately so its current status (
in_transit,out_for_delivery,delivered,exception), latest checkpoint description, and location populate right away in your dashboard table. lastscannedautomatically re-checks every active watch on an adaptive schedule (every 15 minutes whenout_for_delivery, every 30 minutes onexception, and every 1 hour whilein_transit) and stops automatically oncedelivered.- Need Slack, ERP, or helpdesk alerts? Add a webhook URL in
app.lastscanned.com/webhooksto receive HMAC-SHA256 signedtracking.updatedevents whenever any watched shipment changes status.
2. No-Code Spreadsheet & SLA Auditing: Bulk Tracking CSV Auditor (/tools/bulk-tracking-auditor)
When finance or fulfillment teams need to audit a spreadsheet of tracking numbers and export a clean CSV with transit times and delivery timestamps:
- Open the Bulk Tracking CSV & SLA Auditor (
lastscanned.com/tools/bulk-tracking-auditor). - Paste your tracking numbers (one per line, or
carrier,tracking_numbersuch assaia,77136436530), or click Load Multi-Carrier Audit Sample. - Enter your
lsk_live_...API key or a$0.50credit pack token (lsk_pack_...) for live carrier lookups. - Review the summary KPIs (Delivered on Time, In Transit, Exceptions / Action Required, and Average Transit Days) and click Export CSV to download a spreadsheet ready for Excel, Google Sheets, or chargeback/SLA claims.
3. Programmatic Batch API (GET /v1/track?numbers=...)
For developers and data pipelines, GET /v1/track accepts up to 25 comma-separated tracking numbers in a single request and fans them out in parallel across all 542 carriers:
curl -s "https://api.lastscanned.com/v1/track?numbers=9400111899223847162534,1Z9999999999999999,UUS5CN5366140981990,SPXSG039323029482,4007854296017911" \
-H "Authorization: Bearer $LASTSCANNED_KEY"Python Script: Convert a 5,000-Row CSV into Enriched Tracking Results
import csv
import requests
API_KEY = "lsk_live_..."
BATCH_SIZE = 25
def chunked(iterable, size):
for i in range(0, len(iterable), size):
yield iterable[i:i + size]
with open("shipments_in.csv", newline="") as f_in, open("shipments_out.csv", "w", newline="") as f_out:
reader = csv.DictReader(f_in)
writer = csv.writer(f_out)
writer.writerow(["tracking_number", "carrier", "status", "sub_status", "delivered_at", "latest_checkpoint", "latest_location"])
rows = [r["tracking_number"].strip() for r in reader if r.get("tracking_number")]
for batch in chunked(rows, BATCH_SIZE):
resp = requests.get(
"https://api.lastscanned.com/v1/track",
params={"numbers": ",".join(batch)},
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=30,
)
resp.raise_for_status()
data = resp.json()
results = data if isinstance(data, list) else data.get("results", [data])
for item in results:
events = item.get("events") or []
latest = events[0] if events else {}
loc = latest.get("location") or {}
loc_str = ", ".join(filter(None, [loc.get("city"), loc.get("state"), loc.get("country")]))
writer.writerow([
item.get("trackingNumber"),
item.get("carrier"),
item.get("status"),
item.get("subStatus"),
item.get("deliveredAt"),
latest.get("description"),
loc_str,
])Transparent Bulk Pricing
| Tier | Price | Included Live Lookups | Overages | Best For |
|---|---|---|---|---|
| Sandbox / Preview | $0 | Unlimited zero-cost sample previews (lastscanned.com/lookup) | $0 | Testing UI & schema normalization |
| Instant Credit Pack | $0.50 one-time | 25 live lookups ($0.02/lookup) | Buy another pack anytime | One-off spreadsheet audits & quick batches |
| Pro Plan | $4.99 / month | 1,000 live lookups / month ($0.005/lookup) | $0.005 / lookup ($5 per 1,000) | Daily Web UI Dashboard Watches, webhooks & production APIs |
| Keyless x402 / Tempo MPP | $0.005 / lookup | Pay-per-request on Base USDC | No account required | Autonomous AI agents & headless CLI scripts |