Real-time Express Tracking check API documentation
1. Real-time Express Tracking Query API
After the user submits the tracking number to the API, it will retrieve the information from the courier company in real-time and return the latest logistics information for this tracking number, including logistics path, status, time, etc.
Note: Please ensure that the frequency of each query for a single tracking number is at least half an hour apart; otherwise, it may result in the tracking number being locked.
1.1 Request URL
https://poll.kuaidi100.com/poll/query.do
1.2 Request Type
post
1.3 Input Parameters
Request Parameters (header)
Name | Type | Default Value |
Content-Type | string | application/x-www-form-urlencoded |
Request Parameters (body)
Name | Type | Required | Example Value | Description |
customer | String | Yes | Authorization code, please apply for the enterprise version to obtain | |
sign | String | Yes | Signature used to verify identity, encrypted using MD5 in the order of param + key + customer (note: the encrypted string must be converted to 32-bit uppercase), without adding the “+” sign | |
Θparam | Object | Yes | Composed of other fields | |
└ com | string | Yes | yuantong | Code of the courier company to query, all in lowercase letters. Download the code table |
└ num | string | Yes | 12345678 | The tracking number to query, with a minimum length of 6 characters and a maximum length of 32 characters |
└ phone | string | No | 13888888888 | Phone number of the sender or recipient (mobile or landline, only one can be filled. Required for SF Express and SF Freight, optional for other couriers. If the landline number has an extension, do not include the extension; if the number is an e-commerce virtual number, include the last four digits after the "-". See details) |
└ from | string | No | Guangdong Shenzhen | Departure city |
└ to | string | No | Beijing Chaoyang | Destination city, increased monitoring frequency upon arrival |
└ resultv2 | string | No | 1 | Adding this field enables administrative region parsing. Empty: disabled (default), 1: enable administrative region parsing and add logistics status name to the logistics trajectory, 4: enable administrative region parsing, add advanced logistics status name and value to the logistics trajectory, and return the departure, destination, and current city information |
└ show | String | No | 0 | Return format: 0: JSON format (default), 1: XML, 2: HTML, 3: text |
└ order | String | No | desc | Sorting order of the results: desc for descending (default), asc for ascending |
└ lang | String | No | en | Select the language for returning results, supporting both Chinese(zh) and English(en) |
1.4 Request Parameters Example
customer = **********
sign = ******************
param = {
"com": "yuantong",
"num": "YT7450353838751",
"phone": "1011",
"resultv2": "4",
"show": "0",
"order": "desc",
"lang":"en"
}
1.5 Response F
Field Name | Type | Description |
message | String | Message body, please ignore |
state | String | Current status of the tracking number, default is 0: in transit, 1: collected, 2: problem, 3: delivered, 4: returned, 5: dispatching, 8: customs clearance, 14: refused, etc. For advanced logistics status, please refer to resultv2 |
status | String | Communication status, please ignore |
condition | String | Detailed status mark of the tracking number, not yet implemented, please ignore |
ischeck | String | Delivery status mark, 0: not delivered, 1: delivered, please ignore, refer to the state field for detailed status |
com | String | Courier company code, all in lowercase letters |
nu | String | Tracking number |
Θdata | Array | Latest query results, array containing multiple items in reverse chronological order (i.e., the latest time is first), each item is an object with the following fields: |
└ context | String | Content |
└ time | String | Original format time |
└ ftime | String | Formatted time |
└ status | String | Corresponding logistics status name or advanced status name, appears only if resultv2=1 or resultv2=4 is submitted in the real-time query interface |
└ statusCode | String | Corresponding advanced logistics status value, appears only if resultv2=4 is submitted in the real-time query interface |
└ areaCode | String | Administrative region code, appears only if resultv2=1 or resultv2=4 is submitted in the real-time query interface |
└ areaName | String | Administrative region name, appears only if resultv2=1 or resultv2=4 is submitted in the real-time query interface |
└ areaCenter | String | Longitude and latitude of the administrative region, appears only if resultv2=4 is submitted in the real-time query interface |
└ location | String | Current location of the parcel, appears only if resultv2=4 is submitted in the real-time query interface |
└ areaPinYin | String | Pinyin of the administrative region, appears only if resultv2=4 is submitted in the real-time query interface |
1.6 Explanation of Waybill Status (state)
Logistics Status Value | Logistics Status Name | Advanced Logistics Status Value | Advanced Logistics Status Name | Meaning |
1 | Collected | 1 | Collected | Parcel collected |
101 | Ordered | Order placed for the parcel | ||
102 | Awaiting Collection | Awaiting courier collection | ||
103 | Collected | Courier has collected the parcel | ||
0 | 0 | In Transit | Parcel is in transit | |
1001 | Parcel has arrived in the recipient's city | |||
1002 | Parcel is in the process of transportation | |||
1003 | Redirected | Parcel has been forwarded to a new delivery address | ||
5 | Dispatching | 5 | Dispatching | Parcel is being dispatched |
501 | Delivered to Locker or parcel station | Parcel has been delivered to a locker or parcel station | ||
3 | Delivered | 3 | Delivered | Parcel has been delivered |
301 | Signed by Recipient | Recipient has signed for the parcel | ||
302 | Delivered after Dispatch Exception | Parcel showed dispatch exception but was subsequently delivered | ||
303 | Signed by Proxy | Parcel has been signed for by a proxy | ||
304 | Signed from Locker or Station | Parcel has been picked up from locker or station | ||
6 | Returning | 6 | Returning | Parcel is being returned to the sender |
4 | Returned | 4 | Returned | This parcel has been returned |
401 | Cancelled | This parcel has been cancelled | ||
14 | Refused | Recipient refused to accept the parcel | ||
7 | Redirected | 7 | Redirected | Parcel transferred to another courier company |
2 | Problem | 2 | Problem | Parcel has encountered a problem |
201 | Timeout Undelivered | Parcel not delivered after a long dispatch time | ||
202 | Timeout No Update | Parcel not dispatched or delivered for a long time | ||
203 | Refused by Recipient | Recipient initiated refusal, awaiting sender's confirmation | ||
204 | Dispatch Exception | Exception encountered during dispatch | ||
205 | Timeout in Locker or Station | Parcel not picked up from locker or station for a long time | ||
206 | Unable to Contact | Unable to contact the recipient | ||
207 | Out of Service Area | Out of the courier company's service area | ||
208 | Stagnant | Parcel stagnant at a node, not dispatched | ||
209 | Damaged | Parcel is damaged | ||
210 | Cancelled by Sender | Sender applied to cancel the parcel | ||
8 | Customs Clearance | 8 | Customs Clearance | Parcel is clearing customs |
10 | Awaiting Customs Clearance | Parcel waiting for customs clearance | ||
11 | In Customs Clearance | Parcel is in the customs clearance process | ||
12 | Customs Cleared | Parcel has completed customs clearance | ||
13 | Customs Clearance Exception | Exception occurred during customs clearance | ||
14 | Refused | \ | \ | Recipient refused the parcel |
Note: To receive advanced logistics status names and values, pass "4" for resultv2.
1.7 Example of Correct Return
JSON Format
{
"message": "ok",
"nu": "YT7450353838751",
"ischeck": "1",
"com": "yuantong",
"status": "200",
"data": [
{
"time": "2024-03-09 10:47:53",
"context": "Your package has been signed for at the Fengchao cabinet in front of Tianjin Tianduan Press Co., Ltd. If you have any questions, please contact the salesperson at 18521184117, the branch phone number is 022-65673899, and the complaint phone number is 022-65673899. Thank you for using YTO Express. Looking forward to serving you again!",
"ftime": "2024-03-09 10:47:53",
"areaCode": null,
"areaName": null,
"status": "Signed from Locker or Station",
"location": "天津市,北辰区",
"areaCenter": null,
"areaPinYin": null,
"statusCode": "304"
},
{
"time": "2024-03-09 10:19:51",
"context": "Your package has arrived at [Fengchao] (Fengchao cabinet at the entrance of Tianjin Tianduan Press Co., Ltd.) on Jinwei Road. Please pick up the package in a timely manner. If you have any questions, please contact the salesperson at 18521184117, the branch phone number is 022-65673899, and the complaint phone number is 022-65673899. Thank you for using YTO Express. Looking forward to serving you again!",
"ftime": "2024-03-09 10:19:51",
"areaCode": null,
"areaName": null,
"status": "Delivered to Locker or parcel station",
"location": "天津市,北辰区",
"areaCenter": null,
"areaPinYin": null,
"statusCode": "501"
},
{
"time": "2024-03-09 07:23:55",
"context": "Li Yanhang (18521184117) from Beichen District, Tianjin is currently delivering the package. Please be patient! If you have any questions, please contact the branch at 022-65673899 or the complaint hotline at 022-65673899. [95161 and 185211 Shanghai numbers are exclusive numbers for YTO agents, please rest assured to answer]",
"ftime": "2024-03-09 07:23:55",
"areaCode": "CN120113000000",
"areaName": "天津,天津,北辰区",
"status": "Dispatching",
"location": "天津市,北辰区",
"areaCenter": "117.139343,39.217817",
"areaPinYin": "bei chen qu",
"statusCode": "5"
},
{
"time": "2024-03-09 07:22:05",
"context": "Your package has arrived at [Department 1, Beichen District, Tianjin]",
"ftime": "2024-03-09 07:22:05",
"areaCode": "CN120113000000",
"areaName": "天津,天津,北辰区",
"status": "In Transit",
"location": "天津市,北辰区",
"areaCenter": "117.139343,39.217817",
"areaPinYin": "bei chen qu",
"statusCode": "0"
},
{
"time": "2024-03-08 17:35:48",
"context": "Your package has left Tianjin Transfer Center and has been sent to Beichen District, Tianjin",
"ftime": "2024-03-08 17:35:48",
"areaCode": "CN120113000000",
"areaName": "天津,天津,北辰区",
"status": "Trunk Line",
"location": "天津市,东丽区",
"areaCenter": "117.139343,39.217817",
"areaPinYin": "bei chen qu",
"statusCode": "1002"
},
{
"time": "2024-03-08 17:04:19",
"context": "Your package has arrived at the Tianjin Transfer Center",
"ftime": "2024-03-08 17:04:19",
"areaCode": "CN120000000000",
"areaName": "天津",
"status": "Trunk Line",
"location": "天津市,东丽区",
"areaCenter": "117.200983,39.084158",
"areaPinYin": "tian jin",
"statusCode": "1002"
},
{
"time": "2024-03-08 10:39:53",
"context": "Your package has left the North China Transfer Center and has been sent to the Tianjin Transfer Center",
"ftime": "2024-03-08 10:39:53",
"areaCode": "CN120000000000",
"areaName": "天津",
"status": "Trunk Line",
"location": "北京市,朝阳区",
"areaCenter": "117.200983,39.084158",
"areaPinYin": "tian jin",
"statusCode": "1002"
},
{
"time": "2024-03-08 10:37:01",
"context": "Your package has arrived at the North China Transfer Center",
"ftime": "2024-03-08 10:37:01",
"areaCode": "CN110105000000",
"areaName": "北京,北京,朝阳区",
"status": "Trunk Line",
"location": "北京市,朝阳区",
"areaCenter": "116.601144,39.948574",
"areaPinYin": "chao yang qu",
"statusCode": "1002"
},
{
"time": "2024-03-08 03:50:46",
"context": "Your package has left the Jinan Transfer Center and has been sent to the North China Transfer Center",
"ftime": "2024-03-08 03:50:46",
"areaCode": "CN370112000000",
"areaName": "山东,济南市,历城区",
"status": "Trunk Line",
"location": "济南市,历城区",
"areaCenter": "117.065237,36.680017",
"areaPinYin": "li cheng qu",
"statusCode": "1002"
},
{
"time": "2024-03-08 03:48:09",
"context": "Your package has arrived at the Jinan Transfer Center",
"ftime": "2024-03-08 03:48:09",
"areaCode": "CN370112000000",
"areaName": "山东,济南市,历城区",
"status": "Trunk Line",
"location": "济南市,历城区",
"areaCenter": "117.065237,36.680017",
"areaPinYin": "li cheng qu",
"statusCode": "1002"
},
{
"time": "2024-03-07 22:51:35",
"context": "Your package has left Jinshui'an, Jinan City, Shandong Province and has been sent to Jinan Transfer Center",
"ftime": "2024-03-07 22:51:35",
"areaCode": "CN370105000000",
"areaName": "山东,济南市,天桥区",
"status": "Trunk Line",
"location": "济南市,天桥区",
"areaCenter": "116.987492,36.678016",
"areaPinYin": "tian qiao qu",
"statusCode": "1002"
},
{
"time": "2024-03-07 16:55:46",
"context": "Your package has been picked up by [Jinshui'an, Jinan City, Shandong Province], recipient: Huo Shengquan (15650027611)",
"ftime": "2024-03-07 16:55:46",
"areaCode": "CN370105000000",
"areaName": "山东,济南市,天桥区",
"status": "Collected",
"location": "济南市,天桥区",
"areaCenter": "116.987492,36.678016",
"areaPinYin": "tian qiao qu",
"statusCode": "1"
}
],
"state": "304",
"condition": "F00",
"routeInfo": {
"from": {
"number": "CN370105000000",
"name": "山东,济南市,天桥区"
},
"cur": {
"number": "CN120113000000",
"name": "天津,天津,北辰区"
},
"to": {
"number": "CN120113000000",
"name": "天津,天津,北辰区"
}
},
"isLoop": false
}
1.8 Example of Error Return
JSON Format
{
"result": false,
"returnCode": "400",
"message": "找不到对应公司"
}
1.9 Information Code Description
Information Code | Description | Cause and Suggested Handling |
200 | Query successful | Query successful |
400 | Company not found | Incomplete data submitted or account not recharged. Check if the submitted format is POST with x-www-form-urlencoded format |
408 | Courier company parameter error: verification code error | Phone number verification failed. Check if the correct phone number of the sender or recipient has been submitted |
500 | No results found, please check again later | Indicates query failure or no POST submission |
501 | Server error | Intermittent or temporary error on the Kuaidi100 server. This error may also occur if the request is not submitted according to the specifications, such as not following the documentation for courier company parameters |
502 | Server busy | Intermittent or temporary error on the Kuaidi100 server. Please contact Kuaidi100 to investigate the cause |
503 | Signature verification failed | Check the encryption method. Perform MD5 encryption in the order of param + key + customer, and convert the encrypted string to uppercase |
601 | Key expired | No available quota, the account needs to be recharged to use |
2. Courier Company Codes
If the company you need is not on this list, please contact online customer service to add it.
3. Demo Downloads
JAVA Example Code | PHP Example Code | PYTHON Example | PYTHON Example |
Appendix1:
Appendix2: See details:
When querying SF Express logistics information, the error "message": "Courier company parameter error: verification code error" may occur due to the following reasons and suggested handling methods:
1. The Kuaidi100 query interface requires the sender's or recipient's phone number reserved when placing the order with the courier company. For SF Express, this field is mandatory, while for other couriers, it is optional.
2. If the phone number is a landline with an extension, do not include the extension number. If the number is a virtual e-commerce number, include the last four digits after the "-".
3. If the correct phone number is not provided or an incorrect number is submitted, any returned logistics tracking information might be cached data verified by other users. This data is not guaranteed by the query service. The interface requires the phone number to be correctly provided.
4. The correctness of the phone number can be verified through the WeChat Mini Program "SF Express+" on the "Track Express" page.
Example:
- For the number 0755-81234567, any of 075581234567, 81234567, or 4567 can be submitted.
- For the number 13801380000, either 13801380000 or 8000 can be submitted.
- For the number 13801380000-1234, either 13801380001234 or 1234 can be submitted.
SF Express+ Query Example: