Discover/Amtrak API
live

Amtrak APIamtrak.com

Search Amtrak trains, compare fares across fare families, look up station details, and retrieve discount programs via a structured JSON API.

Endpoint health
verified 4h ago
get_station_autocomplete
search_trains
get_train_details
get_support_info
get_stations
5/7 passing latest checkself-healing
Endpoints
7
Updated
1d ago

What is the Amtrak API?

This API exposes 7 endpoints covering Amtrak train search, fare comparison, station lookup, and support data. Use search_trains to query available journeys between any two station codes on a given date, getting back departure and arrival times, seat availability, and fare families (Value, Flexible, Saver) in a single call. Companion endpoints handle station autocomplete, cheapest-fare lookups, full train schedules, discount programs, and contact information.

Try it

No input parameters required.

api.parse.bot/scraper/f800c27d-0aaa-4ca0-864e-4dc69e20f764/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/f800c27d-0aaa-4ca0-864e-4dc69e20f764/get_stations' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace amtrak-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Amtrak SDK — search stations, compare fares, check schedules."""
from parse_apis.Amtrak_API import Amtrak, Origin, Destination, PassengerType, NotFoundError

client = Amtrak()

# Search for stations matching "New York" — resolve names to codes.
for match in client.station_matches.search(term="New York", limit=3):
    print(match.display_name, match.station_code)

# List all stations and check accessibility for a few.
for station in client.stations.list(limit=5):
    print(station.station_code, station.staffed, station.station_accessible)

# Find the cheapest fare from Boston to New York.
fare = client.fares.cheapest(origin=Origin.BOS, destination=Destination.NYP, departure_date="2026-07-15")
print(fare.train_name, fare.price, fare.travel_class, fare.fare_family)

# Get detailed schedule for that train.
try:
    schedule = client.train_schedules.get(
        train_number=fare.train_number,
        origin=Origin.BOS,
        destination=Destination.NYP,
        start_date=fare.departure,
    )
    print(schedule.name, schedule.days_of_operation)
    for stop in schedule.stops[:3]:
        print(stop.station_code, stop.arrival, stop.departure)
except NotFoundError as exc:
    print(f"Train not found: {exc}")

# Search for available trains with full journey details.
result = client.journey_results.search(
    origin=Origin.BOS,
    destination=Destination.NYP,
    departure_date="2026-07-15",
    passenger_type=PassengerType.ADULT,
)
print(result.success, len(result.journey_legs))

# List available everyday discounts.
for discount in client.discounts.list(limit=6):
    print(discount.name, discount.description)

print("exercised: stations.list / station_matches.search / fares.cheapest / train_schedules.get / journey_results.search / discounts.list")
All endpoints · 7 totalmissing one? ·

Retrieve all Amtrak stations with their codes and accessibility details. Returns the full station list in a single response. Each station includes flags for QuikTrak kiosk availability, staffing, ADA accessibility, and wheelchair availability.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "stations": "array of station objects each with stationCode, quikTrakAvailable, staffed, stationAccessible, wheelChairAvailable"
  },
  "sample": {
    "data": {
      "stations": [
        {
          "staffed": true,
          "stationCode": "BOS",
          "quikTrakAvailable": true,
          "stationAccessible": true,
          "wheelChairAvailable": true
        },
        {
          "staffed": false,
          "stationCode": "AAM",
          "quikTrakAvailable": false,
          "stationAccessible": false,
          "wheelChairAvailable": false
        }
      ]
    },
    "status": "success"
  }
}

About the Amtrak API

Station Lookup and Autocomplete

get_stations returns the complete Amtrak station list in one response. Each station object includes a stationCode, plus boolean flags for quikTrakAvailable, staffed, stationAccessible, and wheelChairAvailable. When you only have a city name or partial code, get_station_autocomplete accepts a term string — such as 'Boston' or 'NYP' — and returns matching stations with displayName, city, state, address1, postalCode, and geographic coordinates. Station codes returned here are the inputs required by the train search and fare endpoints.

Train Search and Fare Data

search_trains accepts origin, destination, and departure_date (YYYY-MM-DD), with optional return_date for round-trip queries and num_adults for party size. The response includes journeySolutionOption objects containing journey legs, fare options across Value (VLU), Flexible (FLX), and Saver (SVR) families, seat availability inventory, and ancillary flags for pets and bicycles. For a faster single-value answer, get_cheapest_fare returns the lowest available price in USD alongside train_name, train_number, departure, arrival, class, and fare_family for a given origin-destination-date combination.

Train Details and Discounts

get_train_details takes a train_number and start_date obtained from search_trains results, plus origin and destination, and returns the full stop sequence with per-stop arrival and departure times, station facilities, and onboard amenities under travelService and schedulesAndStops. get_everyday_discounts returns a structured list of Amtrak's permanent discount programs — children, seniors, students, military, passengers with disabilities, and groups — each with a name and description. get_support_info rounds out the API with department phone numbers, FAQ content, headquarters address, safety contacts, and available support channels.

Reliability & maintenanceVerified

The Amtrak API is a managed, monitored endpoint for amtrak.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when amtrak.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official amtrak.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
4h ago
Latest check
5/7 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a fare-calendar app that calls get_cheapest_fare for each day in a date range to surface the lowest prices on a route
  • Power a station-picker UI with get_station_autocomplete so users can type city names and resolve them to valid station codes
  • Display ADA and wheelchair accessibility flags from get_stations to help travelers with mobility needs filter stations
  • Aggregate seat availability and fare family data from search_trains to compare Value vs. Flexible vs. Saver pricing on a given route
  • Show the full intermediate stop list and onboard amenities for a selected train using get_train_details
  • Surface discount eligibility information from get_everyday_discounts for student, military, or senior travelers
  • Populate a customer support page with department phone numbers, chat hours, and FAQ content from get_support_info
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Amtrak have an official public developer API?+
Amtrak does not publish a public developer API or API documentation for third-party use. The Parse API provides structured programmatic access to the same train, fare, and station data available on amtrak.com.
What fare families does search_trains distinguish between?+
search_trains returns fare options labeled Value (VLU), Flexible (FLX), and Saver (SVR) within each journey solution. Each option includes seat availability inventory alongside the fare price, so you can see which classes and families still have seats.
Does get_cheapest_fare search across all trains on a route, or just one?+
get_cheapest_fare searches all available trains for the given origin, destination, and departure_date, then returns only the single lowest-priced option. It includes the train_name, train_number, fare_family, travel class, and ISO departure and arrival times for that option.
Does the API cover historical train schedules or past departure times?+
Not currently. search_trains and get_cheapest_fare require future dates within the booking window (up to 11 months out), and get_train_details is designed for use with train numbers obtained from forward-looking search results. You can fork this API on Parse and revise it to add an endpoint targeting historical schedule data if that source becomes available.
Does the API expose real-time train status or live delay information?+
Not currently. The endpoints cover scheduled departure and arrival times, seat availability, and fare pricing, but do not include live train tracking or delay status. You can fork this API on Parse and revise it to add a real-time status endpoint.
Page content last updated . Spec covers 7 endpoints from amtrak.com.
Related APIs in TravelSee all →
thetrainline.com API
Search UK train stations and find the cheapest fares across date ranges, then generate direct booking links to complete your purchase on Trainline.com. Get real-time journey information to compare prices and book your tickets in seconds.
railyatri.in API
Search trains between stations and get real-time information including live train status, timetables, seat availability, and PNR confirmation details. Find the perfect journey by autocompleting station and train names while checking current availability and train schedules.
nationalrail.co.uk API
Check live train departure and arrival times at UK stations, search for specific stations, and get real-time service disruption alerts. Stay informed about rail service delays and changes to plan your journeys efficiently.
trenitalia.com API
Search for trains across Italy, check real-time train status and delays, view station departure and arrival boards, and find available tickets all in one place. Get live traffic information and detailed train itineraries to plan your journey with complete visibility into schedules and service disruptions.
enquiry.indianrail.gov.in API
Search for trains between Indian stations, check schedules, and look up station details to plan your rail journeys. Get real-time train information with support for captcha-protected searches to ensure reliable access to Indian Railways data.
bahn.com API
Search German train schedules and stations, find connections between destinations, and compare ticket prices across Deutsche Bahn routes. Get real-time station information and transit association details to plan your train journey efficiently.
rfi.it API
Check real-time train schedules and station information across Italy's railway network, search for stations, and get live alerts about delays and service disruptions. Monitor train circulation status and access detailed station mappings to plan your journeys efficiently.
trainline.eu API
Search for train stations and routes across the UK and Europe, then find and compare available journeys with schedules and pricing. Book your ideal train trip by accessing real-time travel options directly from Trainline.com.