# CR Train Info Viewer > Public railway train, station, station-pair and trainset information at https://crinfo.net. > 查询中国铁路车次、车站、站间列车与车组记录。 ## Pages - [ARD resource directory](https://crinfo.net/.well-known/ard.json): Primary discovery address for this reading guide and the Markdown search home. The [AI Catalog address](https://crinfo.net/.well-known/ai-catalog.json) describes the same resources using the AI Catalog schema. Both addresses use media type application/ai-catalog+json. - [Search home](https://crinfo.net/): Search trains, stations, station pairs and trainsets using the GET forms. - [English search home](https://crinfo.net/?lang=en): Add lang=en to a page URL for English labels; railway names may remain in Chinese. - [Souvenir ticket generator](https://crinfo.net/tickets): Unofficial, editable souvenirs; not valid for travel. QR, JPG and PDF generation happens locally in the browser. - [Sitemap index](https://crinfo.net/sitemap.xml): Separate Chinese and English XML shards list public pages from the current search directories. Train entries use stable /trains/{traincode} URLs. Chinese page URLs have no query parameters; English page URLs contain only lang=en. Shared resources such as this guide appear once at their canonical URL. Each shard is at most 256 KiB and 2,000 URLs. ## URL patterns - /trains/{traincode}: Without a date, directly displays the recorded timetable matching today in Asia/Shanghai. If today has no record, selects the most recent recorded version using the existing version ordering. Returns HTTP 200 with a self-referencing canonical URL. An optional date=YYYY-MM-DD redirects to the recorded version for that date. If the requested date has no matching record, the page explains its fallback to the latest recorded version. - /trains/{traincode}/{trainno}: A specific timetable version. Preserve trainno when citing; different versions may have different stops or times. - /stations/{station}: Station information and a paginated list of trains for date=YYYY-MM-DD. Prefer the station telecode (for example VNP) from the page's canonical URL to avoid ambiguous names. - /stations/{origin}/{destination}: Trains between two stations for date=YYYY-MM-DD. Use station telecodes and preserve the requested date. - /trainsets/{trainset}: Recorded and predicted trainset assignments. days=7, 14 or 30 controls the recent date range (default 7). - Pagination uses page and pageSize (5, 10, 20 or 50; default 20). A page is only part of the result; follow the pagination links for remaining rows. ## GET search forms Submit queries through /search using these parameters. The same endpoint at /search.md preserves Markdown through redirects; /search.html explicitly selects HTML. Encode each query value with standard URL encoding. Add lang=en for English. | mode | Required parameters | Example | | --- | --- | --- | | train | q (train code), date (YYYY-MM-DD) | /search.md?mode=train&q=G1&date={YYYY-MM-DD} | | station | q (station name or telecode), date (YYYY-MM-DD) | /search.md?mode=station&q=VNP&date={YYYY-MM-DD} | | stationPair | origin, destination (different stations), date (YYYY-MM-DD) | /search.md?mode=stationPair&origin=VNP&destination=AOH&date={YYYY-MM-DD} | | trainset | q (trainset identifier) | /search.md?mode=trainset&q=CR400AF-1006 | Replace {YYYY-MM-DD} with the service date requested by the user before sending a request; do not send the placeholder literally. Invalid or incomplete form input redirects to the home page with invalid=1. Prefer station telecodes from query results or the sitemap; preserve redirect destinations and timetable versions. Local following lists and journey records are private browser data and are not catalog entries. ## Reading the data Append .md to a page pathname to force Markdown, or .html to force regular HTML, regardless of User-Agent or Accept. For example: /trains/G1/24000000G10L.md and /stations/VNP.html?date={YYYY-MM-DD}. Use /.md or /.html for the home page. Keep query parameters after the suffix. Search and version redirects preserve the explicit format; canonical URLs remain unsuffixed. API, Next data JSON and static files keep their original protocols. Without a suffix, the named AI reader User-Agent tokens listed below receive text/markdown at the same public page URLs. Other clients can request Accept: text/markdown or use /api/readable?__path=/stations/VNP&date={YYYY-MM-DD}. Markdown responses contain the same query data and are not shared-cacheable. Browser pages keep their regular HTML presentation. Recognized User-Agent tokens (case-insensitive, matched as whole tokens rather than arbitrary substrings): - OpenAI: OAI-SearchBot, ChatGPT-User, GPTBot - Perplexity: PerplexityBot, Perplexity-User - Anthropic: ClaudeBot, Claude-SearchBot, Claude-User - Other supported tokens: Amazonbot, meta-externalagent, Kimi-SearchBot, PanguBot, MoonshotBot, KimiBot, QwenBot, Hunyuan, GrokBot, ChatGLM-Spider, xAI-Grok, YiBot, MistralAI-User, cohere-ai, Reflectionbot, PetalBot This shared reading guide is linked from the site footer and [pages sitemap](https://crinfo.net/sitemaps/pages-en.xml). Its canonical address is https://crinfo.net/llms.txt; the text is shared by both page languages. Other browser and search-crawler User-Agents keep HTML unless they explicitly request Markdown. HTML pages expose the catalog through rel="ard" and the compatible rel="ai-catalog" links, and readable public pages provide a text/markdown alternate preserving the selected query state. HTTP Link headers also advertise the catalog; Markdown responses retain their canonical link and include navigation back to this guide and both discovery addresses. Agentmap in /robots.txt points to /.well-known/ard.json. These discovery declarations do not grant extra crawling permissions or change rate limits. Each ARD entry includes representativeQueries in Chinese and English for semantic discovery. The AI Catalog representation preserves those queries under extensions["net.crinfo.discovery"].representativeQueries, as its schema requires custom fields to use namespaced extensions. These are ordinary documentation resources: text/plain for this guide and text/markdown for the search home. They are not Agent Skills and do not declare an Agent Skill profile. The official ARD conformance tool reports one expected media-type warning for each entry because these document types are outside its standard discovery types. Train, station and trainset content is also present in server-rendered HTML; JavaScript is not required to read the detail tables. Follow canonical and language alternate links. URL-encode each variable path segment. Dates and times use Asia/Shanghai (UTC+08:00). For train times, the travel-day column indicates the day counted from departure; day 2 means the next calendar day. Station-pair results do not provide a cross-midnight day offset, so verify the train's full timetable before inferring arrival dates. Recorded running dates and assignments are distinct from predictions. The AI Markdown response lists recorded and predicted dates separately for the displayed calendar months. Predictions use recent patterns and are not confirmed operation. A date with no record does not establish that a train is cancelled. Version pages describe recorded timetables, not live delay reports or guaranteed future operation. Keep the version, selected service date, page and prediction status when quoting data. Consult current official railway information for travel decisions. Missing fields displayed as -- or “暂无” are unknown, not zero. Train codes may change along a route; the stop table supplies the change information. Respect /robots.txt and its advisory limit of 10 requests per minute. Prefer targeted queries and existing links over enumerating every possible date, station pair or train version.