train-schedule-query
Train Schedule and Ticket Availability Query
Query nationwide train numbers, departure/arrival times, seat prices, and real-time ticket availability snapshots based on origin, destination, and travel date. Ideal for travel planning and ticket information display.
Usage Cost
10 coins/call
Quick Start
Use a unified response envelope and call directly from your backend.
https://openapi.toolkk.com/v1/train-schedule-querycURL Example
curl --request POST \
--url 'https://openapi.toolkk.com/v1/train-schedule-query' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{\n "start": "北京南",\n "end": "上海虹桥",\n "ishigh": "1",\n "date": "2026-07-20"\n}'Python Example
import os
import requests
url = "https://openapi.toolkk.com/v1/train-schedule-query"
payload = {
"start": "北京南",
"end": "上海虹桥",
"ishigh": "1",
"date": "2026-07-20"
}
headers = {
"Content-Type": "application/json",
"X-API-Key": os.getenv("TOOLKK_API_KEY", "YOUR_API_KEY"),
}
response = requests.request("POST", url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
print(response.json())Go Example
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
endpoint := "https://openapi.toolkk.com/v1/train-schedule-query"
payload := []byte("{\n \"start\": \"北京南\",\n \"end\": \"上海虹桥\",\n \"ishigh\": \"1\",\n \"date\": \"2026-07-20\"\n}")
req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}Java Example
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ToolkkExample {
public static void main(String[] args) throws Exception {
String payload = "{\n \"start\": \"北京南\",\n \"end\": \"上海虹桥\",\n \"ishigh\": \"1\",\n \"date\": \"2026-07-20\"\n}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://openapi.toolkk.com/v1/train-schedule-query"))
.method("POST", HttpRequest.BodyPublishers.ofString(payload))
.header("Content-Type", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}PHP Example
<?php
$endpoint = 'https://openapi.toolkk.com/v1/train-schedule-query';
$payload = "{\n \"start\": \"北京南\",\n \"end\": \"上海虹桥\",\n \"ishigh\": \"1\",\n \"date\": \"2026-07-20\"\n}";
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
echo $response;Response Example
{
"code": 200,
"msg": "成功",
"taskNo": "example",
"data": {
"date": "2026-07-20",
"start": "北京南",
"end": "上海虹桥",
"list": [
{
"trainno": "G1",
"departuretime": "07:00",
"arrivaltime": "11:30",
"ze": {
"price": "553.0",
"num": "有"
}
}
]
}
}Examples illustrate the response structure. Actual results depend on the API response.
- Authentication
- Send X-API-Key in request headers
- Rate limit
- 30 req/min
- Timeout
- 15000 ms
Send your API Key in the X-API-Key header from your backend.
Check both HTTP status and business fields before treating a call as successful.
Use retries and backoff together with rate limits in high-frequency scenarios.
Request Fields
Send requests from your server with the key in the X-API-Key header.
Request Fields
The fields below are derived from example JSON for integration reference only.
| Path | Type | Required | Description | Sample |
|---|---|---|---|---|
| start | string | Unspecified | Unspecified | 北京南 |
| end | string | Unspecified | Unspecified | 上海虹桥 |
| ishigh | string | Unspecified | Unspecified | 1 |
| date | string | Unspecified | Unspecified | 2026-07-20 |
Request Example
{
"start": "北京南",
"end": "上海虹桥",
"ishigh": "1",
"date": "2026-07-20"
}- Authentication
- Send X-API-Key in request headers
- Rate limit
- 30 req/min
- Timeout
- 15000 ms
Response Fields
Examples illustrate the response structure. Actual results depend on the API response.
Response Fields
The fields below are derived from example JSON for integration reference only.
| Path | Type | Required | Description | Sample |
|---|---|---|---|---|
| code | number | Unspecified | Unspecified | 200 |
| msg | string | Unspecified | Unspecified | 成功 |
| taskNo | string | Unspecified | Unspecified | example |
| data | object | Unspecified | Unspecified | {...} |
| data.date | string | Unspecified | Unspecified | 2026-07-20 |
| data.start | string | Unspecified | Unspecified | 北京南 |
| data.end | string | Unspecified | Unspecified | 上海虹桥 |
| data.list | array | Unspecified | Unspecified | [{"trainno":"G1","departuretime":"07:00","arrivaltime":"11:30","ze":{"price":"553.0","num":"有"}}] |
| data.list[] | object | Unspecified | Unspecified | {...} |
Response Example
{
"code": 200,
"msg": "成功",
"taskNo": "example",
"data": {
"date": "2026-07-20",
"start": "北京南",
"end": "上海虹桥",
"list": [
{
"trainno": "G1",
"departuretime": "07:00",
"arrivaltime": "11:30",
"ze": {
"price": "553.0",
"num": "有"
}
}
]
}
}API overview
Capabilities, use cases, limitations, and frequently asked questions.
API Capabilities
This API provides a nationwide train schedule and ticket availability query service. Users input origin station, destination station, and a specified date to retrieve a list of matching train numbers, departure and arrival times, travel duration, and price and availability snapshot information for various seat types (e.g., Second Class, First Class).
Request and Response
- Request Parameters: Requires
start(origin station),end(destination station),date(travel date, format YYYY-MM-DD), and an optionalishighparameter to filter for high-speed rail (G/D trains) only. - Response Results: Returns a list of train information. Each record includes
trainno(train number),departuretime(departure time),arrivaltime(arrival time),price(price for each seat type), andnum(ticket quantity/status for each seat type).