Bring / Posten Norge Tracking API & MCP
Query live Bring / Posten Norge (bring) shipment status and scan history in a single synchronous GET request or MCP tool call. lastscanned auto-detects UPU S10 numbers ending NO and returns a normalized TrackingResult JSON payload, without a Mybring API key.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | bring |
| Brand & service aliases | Bring, Posten Norge, Posten, Bring Norway, Bring Sweden, Bring Denmark |
| Category | Norwegian national post and Nordic parcel network |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=RR482019378NO,... |
MCP server (https://mcp.lastscanned.com) | track_package, track_packages, list_carriers (claude mcp add --transport http lastscanned https://mcp.lastscanned.com) |
| Authentication & pricing | Authorization: Bearer lsk_live_... · 1 free keyless lookup/day per IP · Free tier (5 unique numbers/day, $0) · Pro ($4.99/mo for 1,000 unique numbers, unlimited re-polls, $0.015/extra) · HTTP 402 Stripe MPP ($0.50 for 25-number lsk_pack_ key or $0.02/number in USDC on Tempo) |
Why developers use lastscanned for Bring
- No Mybring key: Bring's documented tracking API (
tracking.bring.com/api/v2/tracking.json) answers401without a Mybring account.lastscannedreads the data the public tracking site (tracking.bring.com) shows, so no registration is needed. - Package-level view: the lookup picks the package matching your number out of a multi-parcel consignment and reports that package's scans.
- Scan codes kept:
events[].codeholds Bring'slmEventCode; Bring's own event statuses (DELIVERED,TRANSPORT_TO_RECIPIENT,READY_FOR_PICKUP,ATTEMPTED_DELIVERY,DEVIATION,RETURN, ...) map to the 7 standard statuses.
Tracking Number Formats & Auto-Detection (matches vs ?carrier=bring)
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) | /^[A-Z]{2}\d{9}NO$/ with a valid UPU S10 check digit | S10 mod 11 | RR482019378NO |
Pass 2 (mayMatch) | /^370\d{15}$/ (Bring's 18-digit parcel number) | — | 370727000000000011 |
Explicit (?carrier=bring) | Any other number Bring tracks | — | — |
When is ?carrier=bring optional vs required?
- Optional (auto-detected): S10 numbers ending
NOwith a valid check digit (Pass 1) and 18-digit numbers starting370when no other carrier claims them (Pass 2). - Required: any other Bring or Posten number. S10 numbers ending
SEorDKbelong to PostNord.
Synchronous GET Request & Normalized JSON Response
curl
curl -s "https://api.lastscanned.com/v1/track/RR482019378NO" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"JavaScript / TypeScript (fetch)
const res = await fetch("https://api.lastscanned.com/v1/track/RR482019378NO", {
headers: { Authorization: `Bearer ${process.env.LASTSCANNED_API_KEY}` },
});
const pkg = await res.json();
console.log(pkg.status, pkg.events[0]);MCP track_package tool call
{
"tool": "track_package",
"arguments": {
"tracking_number": "RR482019378NO"
}
}Normalized TrackingResult JSON response
{
"carrier": "bring",
"trackingNumber": "RR482019378NO",
"status": "delivered",
"statusDescription": "Delivered",
"service": "Norgespakke",
"deliveredAt": "2026-10-22T11:42:00Z",
"deliveredAtLocal": "2026-10-22T13:42:00",
"signedBy": null,
"destination": {
"city": "Oslo",
"state": null,
"country": "NO"
},
"events": [
{
"timestamp": "2026-10-22T11:42:00Z",
"localTime": "2026-10-22T13:42:00",
"status": "delivered",
"description": "Delivered",
"location": "OSLO 0150",
"code": "H"
},
{
"timestamp": "2026-10-22T05:55:00Z",
"localTime": "2026-10-22T07:55:00",
"status": "out_for_delivery",
"description": "Loaded for delivery",
"location": "OSLO 0150",
"code": "I"
},
{
"timestamp": "2026-10-21T19:20:00Z",
"localTime": "2026-10-21T21:20:00",
"status": "in_transit",
"description": "Arrived at terminal",
"location": "OSLO 0580",
"code": "X"
}
]
}Times: Bring sends ISO times; when the time carries an offset,
timestampis the exact UTC moment, otherwise onlylocalTimeis set. No record: a number Bring does not know returnsnot_found.
Related Resources
- Live browser lookup tool: Track a Bring package live on lastscanned.com/lookup/bring
- Carrier hub: All supported carriers
- Regex & check digits: Tracking number formats & auto-detection
- AI support workflows: WISMO AI agents & synchronous tracking
Chronopost Tracking API & MCP
Track Chronopost (France) parcels via synchronous REST GET or MCP. Normalized JSON status and scan history with exact UTC times, no carrier credentials required.
Posti (Finland) Tracking API & MCP
Track Posti Finland parcels and mail (S10 numbers ending FI, JJFI parcel numbers) via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials required.