{
  "data": {
    "author": "Vlad Cealicu",
    "faq": null,
    "kicker": "Blog · Agent errands · 26 October 2026",
    "lede": "I asked an agent to buy one ticket from London to Edinburgh. National Rail found the trains and the prices, then couldn't pass it on to LNER, the seller it had picked. The third errand in the series.",
    "readingMinutes": 4,
    "words": 815
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/blog/i-asked-an-agent-to-buy-a-train-ticket",
    "json": "https://www.anchorterminal.com/blog/i-asked-an-agent-to-buy-a-train-ticket.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/blog/i-asked-an-agent-to-buy-a-train-ticket.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/blog/i-asked-an-agent-to-buy-a-train-ticket.min.md"
  },
  "markdown": "By Vlad Cealicu, 26 October 2026. 815 words, about 4 min to read.\n\nOn Saturday 17 October I asked an agent to buy one adult ticket from London King's Cross to Edinburgh, leaving after 9am on Friday 30 October. It tried seven sites. One found the trains, and none of them got it to a page where you type a passenger's name.\n\nThis is the third errand in the series, after [my flight](/blog/personal-agents-sell-errands-they-cant-run) and [a table for dinner](/blog/i-asked-an-agent-to-book-dinner-in-london). Finding a train turned out to be the easy part.\n\n- 7: sites tried\n- 1: let the agent search\n- 0: reached a page asking for a passenger's name\n\nOne adult, King's Cross to Edinburgh, Friday 30 October after 9am, tried on 17 October 2026. Source [1].\n\n## How far did it get?\n\nNational Rail Enquiries worked. It returned ten trains between 09:03 and 11:33, Standard from £72.90 for the 10:15, which gets in at 14:32, and First Class from £119.20. The 09:03 was £92.00 as an Advance Single and £204.80 as an Anytime Single [[1]](#ref-1). National Rail doesn't sell tickets, it passes you to a seller, with LNER chosen already. That's where it stopped. \"Oh, no! Something went wrong! Unable to pass you to the retailer - please try searching again\" [[1]](#ref-1). We don't know why, and the transfer page never contacted LNER. LNER's own site had already shown the agent a bot check, and its robots.txt disallows `/buy-tickets/`, so the hand-off would have ended there anyway [[1]](#ref-1).\n\nLNER, the company running the train, answered with a 403 and \"Press \u0026 Hold to confirm you are a human (and not a bot).\" Omio sent Cloudflare's \"Verify you are human\" check, and Rail Europe a 403 saying \"Access is temporarily restricted\" [[1]](#ref-1). TrainPal let the agent fill in the search, showed £40 for the 30th on its calendar, and then put up a slider puzzle on the results with \"Oops, no trains are available at the moment\" behind it [[1]](#ref-1).\n\nTrainline's search form worked, and its calendar showed US$48 for the day, in dollars because it took our server for an American visitor. Pressing search opened Trainline's Booking.com hotel offer, from a box the site ticks by default, at `/dpi`, which its robots.txt disallows. It also disallows `/book/`, where its results and booking pages live, so the agent stopped there [[1]](#ref-1). Google Search's robots.txt disallows `/search`, which rules out the train results in Google too.\n\nBuying a ticket from London to Edinburgh through the open web\n\n1. **National Rail Enquiries** (searched). Ten trains, Standard from £72.90 and First Class from £119.20 [[1]](#ref-1)\n2. **Hand-off to LNER** (broke). \"Unable to pass you to the retailer - please try searching again\" [[1]](#ref-1)\n3. **LNER, Omio and Rail Europe** (bot check). \"Press \u0026 Hold to confirm you are a human\", \"Verify you are human\" and \"Access is temporarily restricted\" [[1]](#ref-1)\n4. **TrainPal** (bot check). A slider puzzle on the results page [[1]](#ref-1)\n5. **Trainline and Google Search** (kept out). robots.txt disallows the pages with results [[1]](#ref-1)\n\nThe page that worked was heavy too. National Rail's results were 302,666 characters of HTML for 5,210 characters of text a person reads, and the search moved 8.1MB over the wire, counting a Booking.com hotel page National Rail opened beside its results [[1]](#ref-1).\n\n- 302,666: characters of HTML\n- 5,210: characters a person reads\n- 8.1MB: over the wire for the search, with a Booking.com page it opened\n\nNational Rail's results, 17 October 2026. Source [1].\n\n## Is there a door built for agents?\n\nNo. On the flight there was Kiwi.com's MCP server, and for restaurants there are partner APIs a diner's agent can't get into. For trains we list nothing at all. Every listing in our directory that mentions rail or trains is about payment rails, training models or Railway the hosting platform. The closest is HERE's public transit routing, which plans the journey and doesn't sell the ticket [[2]](#ref-2).\n\nThe fares exist as data, since National Rail can show ten trains with prices in a few seconds. What doesn't exist is a way for an agent acting for one person to buy one of them. I'd like to see LNER or Trainline put the search and a held booking behind a key, with the person paying on their phone, the way [some tools already let agents in](/blog/the-tools-that-let-agents-in).\n\n## How the test was run\n\nOn Saturday 17 October 2026, between 09:44 and 09:57 UTC, an agent drove a headless Chromium browser from a cloud server one step at a time, with the same setup as [the dinner test](/blog/i-asked-an-agent-to-book-dinner-in-london#test). Its user agent said it was a test by Anchor Terminal, it solved no CAPTCHAs, it read each site's robots.txt and stayed out of disallowed paths, and it typed nothing personal and paid nothing. When Trainline asked for the passenger's age, it said \"Prefer not to say\". The sites placed the server in the United States, so Trainline asked whether to switch to its American site, and the agent said not now and stayed on the UK one. Trainline was run twice from the start, because our own harness crashed at the search click the first time. TrainPal redirected to another domain before the agent had read that domain's robots.txt, and we checked afterwards that the page it landed on was allowed.\n\n---\n\nMore in [Agent errands](https://www.anchorterminal.com/blog/agent-errands/index.md) · Previous errand [I asked an agent to book dinner in London, and one site in nine let it look for a table](https://www.anchorterminal.com/blog/i-asked-an-agent-to-book-dinner-in-london.md)\n\n- Older: [Can you run Kimi K3 locally? Not on a desk, and Moonshot never said you could](https://www.anchorterminal.com/blog/run-kimi-k3-locally.md)\n- All posts: https://www.anchorterminal.com/blog/index.md\n\n## References\n\nRead on 17 October 2026.\n\n[1] Anchor Terminal, our train test, 17 October 2026, described above. Source for every page each site returned, the quotes, the fares, the robots.txt rules and the page sizes. #test\n\n[2] Anchor Terminal, the directory, 17 October 2026. Source for there being no rail booking tool for agents among our listings, and for HERE's transit routing. https://www.anchorterminal.com/tools/\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-26",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.6",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Blog",
        "url": "https://www.anchorterminal.com/blog/"
      },
      {
        "name": "Agent errands",
        "url": "https://www.anchorterminal.com/blog/agent-errands/"
      },
      {
        "name": "Buying a train ticket with an agent",
        "url": ""
      }
    ],
    "description": "Vlad Cealicu sent an AI agent to buy a train ticket from London King's Cross to Edinburgh. LNER asked it to press and hold to prove it's human, Omio, Rail Europe and TrainPal put up bot checks, Trainline's robots.txt asks robots to stay off its results, and National Rail found the trains but failed to pass it to the seller. There's no rail API for agents in our directory.",
    "facts": [
      "Vlad Cealicu",
      "26 October 2026"
    ],
    "h1": "I asked an agent to buy a train ticket to Edinburgh, and the one site that worked couldn't hand it over",
    "image": "https://www.anchorterminal.com/assets/og/blog-i-asked-an-agent-to-buy-a-train-ticket.png",
    "path": "/blog/i-asked-an-agent-to-buy-a-train-ticket",
    "published": "2026-10-26",
    "section": "blog",
    "title": "Can an AI agent book a train ticket? Trainline, LNER and National Rail tested | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-26",
    "url": "https://www.anchorterminal.com/blog/i-asked-an-agent-to-buy-a-train-ticket"
  },
  "tokens": {
    "markdown": 1750,
    "slim": 880
  },
  "version": 1
}
