Skip to content

BuildNot yet confirmed elsewhere1 publisher2 min readPublished

Code still calling Amadeus Self-Service is aimed at a test host that no longer resolves

Amadeus disabled its Self-Service API keys on 17 July 2026 and archived its official SDKs the same day. Code failing against test.api.amadeus.com needs a migration, and only the read-only price calls have a drop-in path.

The Engineer · Build desk

How we use AISend a correction

Illustration accompanying Code still calling Amadeus Self-Service is aimed at a test host that no longer resolves
Generated illustration

What happened

  • PhocusWire reported the shutdown plan on 9 February, with new registrations paused first and Amadeus's Enterprise APIs continuing after the cutoff.
  • More than 190 GitHub issues and pull requests have mentioned Amadeus Self-Service since February, some removing the Amadeus adapter and others swapping in another API.
  • A developer now sells an Apify replacement that takes the old Self-Service parameter names, fetches live Google Flights prices and returns Amadeus-shaped JSON.
  • Moving a Python flight search to that replacement leaves the parsing loop as it was, except that response.data becomes response["data"].

Why it matters

  • decision There is no upstream fix to wait for, so teams choose between a read-only shim for price lookups and a booking contract with an airline, a consolidator or Amadeus Enterprise.
  • cost At the seller's prices a 10-offer search costs $0.008, so Apify's $5 monthly free credit covers about 625 searches before a polling tracker starts paying.
  • constraint Fare alerts tuned to old Amadeus price-metrics thresholds will fire on different numbers after migration and need retuning against the new quartiles.
  • exposure A migrated tracker now depends on two outside parties: a single developer's Apify actor and Google Flights as the upstream price source.

The post's author, a developer who sells a replacement, wrote that if a project "suddenly can't reach test.api.amadeus.com or gets auth errors, it's not your code." [10] On 2 October that host, the SDK default, had no DNS A record at Google or Cloudflare's resolvers [9]. A client asking for the address gets nothing back. The request fails at name resolution, before any credential leaves the machine [21]. The auth errors match the disabled keys [7].

Amadeus's developer portal says the self-service portal "has been decommissioned on July 17th" [6]. The amadeus-python, amadeus-node and amadeus-java repositories were archived on GitHub that day, along with the Ruby and .NET SDKs [8]. PhocusWire reported the plan on 9 February [7], 158 days before the cutoff [18]. Many of the projects now filing issues are student work that started an Amadeus integration after registrations had closed [22].

The author's shim gets the interface right, and its helper is short. It calls client.actor("kuezi/flight-offers-api").call() with the endpoint and parameters, then reads the "RESPONSE" record from that run's default key-value store [2]. Every Amadeus-style request is a full actor run [2].

The post's JFK-LAX search took 5 seconds [14]. Its cheapest-date call priced 30 dates in 18 seconds [15], about 0.6 seconds a date [20]. Five seconds is slow for a search box and irrelevant to a nightly fare check. These are the seller's numbers, for one route on one day. They transfer if your routes price about as fast through Google Flights and your code uses only the three calls the shim covers [1]. Round trips take a single trip length such as duration=7. Amadeus-style ranges like 1,15 are not supported [4].

Price metrics moved to a different basis. Amadeus built its quartiles from its booking data [17]. For JFK-LAX on 12 November, the shim's price-metrics call returned a minimum of 167.00 and a third quartile of 204.00 [16]. The flight-offers run for the same route and date, capped at max=5, returned five offers, all at 204.00 [14].

I think the shim is a reasonable trade for a hobby tracker that polls on a schedule and only parses offers. I would not put it behind anything that needs a sub-second answer [14].

What to watch

  • Whether Amadeus documents a path for former Self-Service users into the Enterprise APIs that PhocusWire reported will continue.
  • Whether the seller publishes how the replacement's price-metrics quartiles are built, so they can be compared with Amadeus's booking-data figures.
  • Whether GitHub issues mentioning Amadeus Self-Service keep climbing past 190 as dormant student and hobby projects are rerun.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence50
Adoption25
Hype gap+25
Incentives85
Confidence45
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    The author published Flight Offers API on Apify, covering the same three read-only calls: it takes the Amadeus Self-Service parameter names, fetches live prices from Google Flights, and returns Amadeus-shaped JSON. The author discloses building and selling it.

    ReportedSupportedSource: dev.to post author, who sells the product2 sources— create a free account to open themView cited source
  2. [2]

    The migration helper calls client.actor("kuezi/flight-offers-api").call(...) with the endpoint and parameters as run input, then reads the "RESPONSE" record from that run's default key-value store.

    ReportedSupportedSource: code in the dev.to post2 sources— create a free account to open themView cited source
  3. [3]

    After migrating, the parsing loop is unchanged; only response.data becomes response["data"].

    ReportedSupportedSource: dev.to post author2 sources— create a free account to open themView cited source

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · October 3, 2026

    Amadeus Self-Service shut down on July 17. Here's a drop-in replacement for flight prices

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Entities

Loading related stories