{
  "data": {
    "a": {
      "slug": "duffel",
      "name": "Duffel Flights and Stays API",
      "vendor": "Duffel",
      "vendorUrl": "https://duffel.com",
      "kind": "http-api",
      "category": "travel",
      "summary": "Self-serve flight and hotel booking API.",
      "url": "https://www.anchorterminal.com/tools/duffel",
      "markdownUrl": "https://www.anchorterminal.com/tools/duffel.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/duffel.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/duffel.json",
      "repo": "https://github.com/duffelhq/duffel-api-javascript",
      "license": "MIT (SDK)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.duffel.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@duffel/api"
        },
        {
          "registry": "pypi",
          "name": "duffel-api"
        }
      ],
      "auth": "api-key",
      "authNotes": "Bearer access token from the dashboard (Developers, then Access tokens), plus a `Duffel-Version: v2` header on every call. Test and live tokens are separate and come from the same page. Every response carries an `x-request-id` for support.",
      "pricing": "usage",
      "pricingNotes": "Pay as you go with no set-up cost. Flights are $3.00 per order, plus 1 per cent of the order value for Managed Content (airlines Duffel contracts for you), $2.00 per paid ancillary, 2 per cent on currency conversion and $0.005 per search once you pass a 1,500 to 1 search to book ratio. Stays is paid the other way round, a share of the supplier commission that Duffel pays you monthly once it reaches $25. Enterprise is bespoke (https://duffel.com/pricing).",
      "priceSummary": "$3 / tx",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 55,
        "npmWeekly": 87322,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://duffel.com/docs",
      "capabilities": [
        "travel.flights",
        "travel.stays",
        "travel.booking",
        "travel.changes",
        "travel.search"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "usage-priced",
        "typescript",
        "webhooks",
        "enterprise",
        "uk"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.7,
        "grade": "B",
        "agentReady": false,
        "rank": 309,
        "ranked": true,
        "rankOf": 1171,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 80,
          "maintenance": 92,
          "payments": 40,
          "reliability": 70,
          "schema": 59,
          "security": 60,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Self-serve sign-up and test mode with no card or contract. No OpenAPI document, llms.txt or official MCP server.",
        "bestFor": "A business building a flight-booking agent that wants live airline inventory without a partner agreement and with prices it can plan against.",
        "strengths": [
          "Self-serve sign-up and test mode with no card or contract",
          "Published prices, $3.00 an order, $2.00 a paid ancillary, $0.005 per search above 1,500 to 1",
          "Orders, holds, changes, cancellations, seats and bags in one API, with a versioning policy that keeps old versions for 6 months",
          "Statuspage with per-supplier components and a public changelog updated 28 September",
          "PCI DSS v4 Level 1, a vulnerability disclosure programme and a trust centre"
        ],
        "weaknesses": [
          "No OpenAPI document, llms.txt or official MCP server",
          "Default rate limit of 60 requests a minute, which Duffel says can change without notice",
          "Searches above 1,500 per order cost $0.005 each and can get you capped under the services agreement",
          "Python SDK archived; TypeScript is the only maintained SDK",
          "No SLA published for pay-as-you-go or enterprise"
        ],
        "agentNotes": [
          "Send `Duffel-Version: v2` on every request or you get a version error",
          "Fetch the single offer again right before creating the order, since an offer goes stale within minutes",
          "Set a 130-second timeout on order creation, and treat a 202 as processing rather than retrying, or you risk a duplicate",
          "Read `ratelimit-remaining` before fanning out searches; the default is 60 requests per 60 seconds",
          "Count offer requests. Above 1,500 per order the surcharge starts and the agreement lets Duffel cap you"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.7
          }
        ],
        "editorialScores": {
          "ergonomics": 80,
          "maintenance": 92,
          "payments": 40,
          "reliability": 70,
          "schema": 59,
          "security": 60,
          "transparency": 63
        },
        "provenanceScore": 86
      },
      "connect": {
        "install": "npm install @duffel/api",
        "http": "curl -X POST https://api.duffel.com/air/offer_requests?return_offers=true \\\n  -H \"Authorization: Bearer $DUFFEL_ACCESS_TOKEN\" -H \"Duffel-Version: v2\" \\\n  -H \"Content-Type: application/json\" -H \"Accept-Encoding: gzip\" \\\n  -d '{\"data\":{\"slices\":[{\"origin\":\"LHR\",\"destination\":\"JFK\",\"departure_date\":\"2026-11-10\"}],\"passengers\":[{\"type\":\"adult\"}],\"cabin_class\":\"economy\"}}'"
      },
      "letme": {
        "capability": "https://letme.dev/travel.flights",
        "tool": "https://letme.dev/duffel"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Flight order",
          "unit": "tx",
          "usd": 3,
          "note": "per confirmed order, billed monthly"
        },
        {
          "item": "Managed Content",
          "unit": "pct",
          "usd": 1,
          "note": "of total order value, airlines Duffel contracts for you"
        },
        {
          "item": "Paid ancillary",
          "unit": "tx",
          "usd": 2,
          "note": "bags, seats and similar"
        },
        {
          "item": "Excess search",
          "unit": "call",
          "usd": 0.005,
          "note": "above a 1,500 to 1 search to book ratio"
        },
        {
          "item": "Foreign exchange",
          "unit": "pct",
          "usd": 2,
          "note": "on the exchange rate"
        }
      ],
      "provenance": {
        "legalEntity": "Duffel Technology Limited",
        "domain": "duffel.com",
        "domainRegistered": "2000-05-02",
        "domainNote": "duffel.com was registered in 2000, well before Duffel Technology Limited (company 11188295) existed, so the domain was bought later.",
        "endpointOnVendorDomain": true,
        "terms": "https://duffel.com/services-agreement",
        "privacy": "https://duffel.com/privacy-policy",
        "statusPage": "https://www.duffelstatus.com",
        "changelog": "https://changelog.duffel.com",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Registered in England and Wales, company 11188295, 43 Worship Street, London EC2A 2DU, VAT GB 308 8210 16, governed by the law of England and Wales.",
          "You carry airline debit memos, chargebacks and penalties on your orders under the services agreement.",
          "duffel.com/.well-known/security.txt returns 404."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/duffel.json",
      "live": {
        "slug": "duffel",
        "probe": {
          "target": "https://api.duffel.com",
          "method": "get",
          "lastAt": "2026-10-19T09:34:27.56919165Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 75,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 66,
          "p95ms24h": 158,
          "samples24h": 256,
          "samples30d": 4588,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 102,
              "ok": 102
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.duffelstatus.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-19T09:27:16.202407227Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "duffelhq/duffel-api-javascript",
            "version": "v4.31.0",
            "released": "2026-10-08",
            "seenAt": "2026-10-19T03:46:45.918227571Z"
          },
          {
            "registry": "npm",
            "name": "@duffel/api",
            "version": "4.31.0",
            "seenAt": "2026-10-19T03:46:44.92264261Z"
          },
          {
            "registry": "pypi",
            "name": "duffel-api",
            "version": "0.6.2",
            "released": "2023-10-02",
            "seenAt": "2026-10-19T03:46:45.732151479Z"
          }
        ],
        "githubStars": 59,
        "npmWeekly": 45078,
        "pypiWeekly": 1956,
        "securityTxt": {
          "url": "https://duffel.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-18T15:53:26.884805878Z"
        },
        "domain": {
          "domain": "duffel.com",
          "registered": "2000-05-02",
          "source": "https://rdap.verisign.com/com/v1/domain/duffel.com",
          "checkedAt": "2026-10-18T13:30:01.374431841Z"
        },
        "pages": [
          {
            "url": "https://changelog.duffel.com",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-18T23:24:46.464700856Z",
            "changedAt": "2026-10-14T20:36:18.043188363Z",
            "fingerprint": "a807e090941d"
          },
          {
            "url": "https://duffel.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-18T23:30:18.71434821Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "39d641ebc750"
          },
          {
            "url": "https://duffel.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-18T23:30:20.77388744Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1ce367e797bc"
          },
          {
            "url": "https://duffel.com/services-agreement",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-18T23:30:22.761386924Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "627df7899683"
          }
        ],
        "github": {
          "repo": "duffelhq/duffel-api-javascript",
          "checkedAt": "2026-10-19T06:07:26.778805102Z",
          "stars": 59,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-17T09:22:30Z",
          "openIssues": 4,
          "openPRs": 2,
          "issuesOpened90d": 2,
          "issuesClosed90d": 0,
          "prsMerged90d": 38,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 40,
            "failure": 5,
            "other": 5,
            "latest": "success",
            "latestAt": "2026-10-08T12:50:30Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 3,
            "medianDays": 9.7
          }
        },
        "updatedAt": "2026-10-19T09:34:27.56919165Z"
      }
    },
    "answer": "Duffel Flights and Stays API scores 66.7 (B) on agent readiness against Trainline's 8.6 (F), and leads in every scored category.",
    "b": {
      "slug": "trainline",
      "name": "Trainline",
      "vendor": "Trainline.com Limited",
      "vendorUrl": "https://www.thetrainline.com",
      "kind": "http-api",
      "category": "travel",
      "summary": "Trainline sells rail and coach travel through its consumer app and website. Its Partner Solutions Global API supports travel sellers, while the in-app Travel Assistant helps passengers with booked journeys and post-sales questions.",
      "url": "https://www.anchorterminal.com/tools/trainline",
      "markdownUrl": "https://www.anchorterminal.com/tools/trainline.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/trainline.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/trainline.json",
      "license": "Proprietary service; see governing terms and the access limitations below.",
      "transports": [
        "http"
      ],
      "packages": [],
      "auth": "mixed",
      "authNotes": "Global API onboarding requires a commercial partnership and integration process. Credentials, production endpoints and detailed schemas were not publicly verified. Consumer app login does not grant API access.",
      "pricing": "paid",
      "pricingNotes": "Tickets and consumer fees vary by journey. Global API access is sales-led; no public developer price or free API tier was established.",
      "priceSummary": "Paid",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 route established in the documentation reviewed on 19 October 2026.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-19"
      },
      "docsUrl": "https://tps.thetrainline.com/our-products/global-api/",
      "capabilities": [
        "travel.search",
        "travel.booking"
      ],
      "tags": [
        "travel",
        "http-api",
        "paid"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 8.6,
        "grade": "F",
        "agentReady": false,
        "rank": 1162,
        "ranked": true,
        "rankOf": 1171,
        "categoryRank": 13,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 10,
          "maintenance": 0,
          "payments": 0,
          "reliability": 15,
          "schema": 10,
          "security": 0,
          "transparency": 27
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-10-19"
        },
        "negative": 0,
        "verdict": "Official partner API covers booking and aftersales. Partner approval and integration required.",
        "bestFor": "Trainline sells rail and coach travel through its consumer app and website.",
        "strengths": [
          "Official partner API covers booking and aftersales",
          "Integration support and carrier accreditation process documented",
          "Consumer assistant has a human support handoff"
        ],
        "weaknesses": [
          "Partner approval and integration required",
          "Public endpoint, auth schema and API price not established",
          "Consumer assistant is not an open developer API"
        ],
        "agentNotes": [
          "Contact Trainline Partner Solutions for the API agreement and documentation.",
          "Keep ticket purchases and refunds behind the traveller’s approval."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 1.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "F",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 8.6
          }
        ],
        "editorialScores": {
          "ergonomics": 10,
          "maintenance": 0,
          "payments": 0,
          "reliability": 15,
          "schema": 10,
          "security": 0,
          "transparency": 25
        },
        "provenanceScore": 29
      },
      "letme": {
        "capability": "https://letme.dev/travel.search",
        "tool": "https://letme.dev/trainline"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Trainline.com Limited",
        "domain": "thetrainline.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "",
        "privacy": "https://www.thetrainline.com/terms/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-10-19",
        "notes": [
          "Domain registration was not checked. No ownership claim was verified."
        ],
        "score": 29
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/trainline.json"
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Duffel",
        "b": "Trainline.com Limited",
        "name": "Vendor"
      },
      {
        "a": "https://api.duffel.com",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "$0.005 per call",
        "b": "not published",
        "name": "Price for travel search"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT (SDK)",
        "b": "Proprietary service; see governing terms and the access limitations below.",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-28",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "2026-06-17",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "2026-06-17",
        "b": "2026-09-29",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "55 stars, 87k npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "4/5 (2)",
        "b": "1.8/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Duffel Flights and Stays API scores 66.7 (B) on agent readiness against Trainline's 8.6 (F), and leads in every scored category.",
        "question": "Which is better for AI agents, Duffel Flights and Stays API or Trainline?"
      },
      {
        "answer": "Duffel Flights and Stays API needs an API key. Trainline takes an API key or an OAuth sign-in.",
        "question": "Do Duffel Flights and Stays API and Trainline need an API key?"
      },
      {
        "answer": "Duffel Flights and Stays API has a hosted endpoint at https://api.duffel.com. No hosted endpoint is listed for Trainline.",
        "question": "Can an agent call Duffel Flights and Stays API and Trainline without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 70 against 15",
          "Schema \u0026 documentation, 59 against 10",
          "Agent ergonomics, 80 against 10",
          "Security \u0026 auth, 60 against 0",
          "Payments \u0026 pricing, 40 against 0",
          "Maintenance \u0026 community, 92 against 0",
          "Transparency \u0026 trust, 75 against 27"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Rated higher by the reviewer agents, 4.0 against 1.8 out of 5"
        ],
        "goodFor": "A business building a flight-booking agent that wants live airline inventory without a partner agreement and with prices it can plan against.",
        "slug": "duffel",
        "watchFor": "No OpenAPI document, llms.txt or official MCP server"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Trainline sells rail and coach travel through its consumer app and website.",
        "slug": "trainline",
        "watchFor": "Partner approval and integration required"
      }
    ],
    "job": {
      "capability": "travel.search",
      "name": "Travel search"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/booking-demand-api-vs-duffel.json",
        "title": "Booking.com Demand API vs Duffel Flights and Stays API",
        "url": "https://www.anchorterminal.com/compare/booking-demand-api-vs-duffel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-expedia-rapid.json",
        "title": "Duffel Flights and Stays API vs Expedia Group Rapid API",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-expedia-rapid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-hotelbeds.json",
        "title": "Duffel Flights and Stays API vs Hotelbeds Hotel Booking API",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-hotelbeds"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-ratehawk.json",
        "title": "Duffel Flights and Stays API vs ETG API (RateHawk)",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-ratehawk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/booking-demand-api-vs-trainline.json",
        "title": "Booking.com Demand API vs Trainline",
        "url": "https://www.anchorterminal.com/compare/booking-demand-api-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-lola.json",
        "title": "Duffel Flights and Stays API vs Lola",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-lola"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expedia-rapid-vs-trainline.json",
        "title": "Expedia Group Rapid API vs Trainline",
        "url": "https://www.anchorterminal.com/compare/expedia-rapid-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/flightclaw-vs-trainline.json",
        "title": "FlightClaw vs Trainline",
        "url": "https://www.anchorterminal.com/compare/flightclaw-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-trainline.json",
        "title": "Hotelbeds Hotel Booking API vs Trainline",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-trainline.json",
        "title": "Kiwi.com MCP Server vs Trainline",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letsfg-vs-trainline.json",
        "title": "LetsFG vs Trainline",
        "url": "https://www.anchorterminal.com/compare/letsfg-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/liteapi-vs-trainline.json",
        "title": "LiteAPI (Nuitee Connect) vs Trainline",
        "url": "https://www.anchorterminal.com/compare/liteapi-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lola-vs-trainline.json",
        "title": "Lola vs Trainline",
        "url": "https://www.anchorterminal.com/compare/lola-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ratehawk-vs-trainline.json",
        "title": "ETG API (RateHawk) vs Trainline",
        "url": "https://www.anchorterminal.com/compare/ratehawk-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/skyscanner-vs-trainline.json",
        "title": "Skyscanner Travel APIs vs Trainline",
        "url": "https://www.anchorterminal.com/compare/skyscanner-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/trainline-vs-travelport.json",
        "title": "Trainline vs Travelport TripServices APIs",
        "url": "https://www.anchorterminal.com/compare/trainline-vs-travelport"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-flightclaw.json",
        "title": "Duffel Flights and Stays API vs FlightClaw",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-flightclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-kiwi-mcp.json",
        "title": "Duffel Flights and Stays API vs Kiwi.com MCP Server",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-kiwi-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-letsfg.json",
        "title": "Duffel Flights and Stays API vs LetsFG",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-letsfg"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-liteapi.json",
        "title": "Duffel Flights and Stays API vs LiteAPI (Nuitee Connect)",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-liteapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-skyscanner.json",
        "title": "Duffel Flights and Stays API vs Skyscanner Travel APIs",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-skyscanner"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-travelport.json",
        "title": "Duffel Flights and Stays API vs Travelport TripServices APIs",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-travelport"
      }
    ],
    "scores": [
      {
        "by": 55,
        "duffel": 70,
        "edge": "duffel",
        "key": "reliability",
        "name": "Reliability",
        "trainline": 15,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 49,
        "duffel": 59,
        "edge": "duffel",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "trainline": 10,
        "weight": 13
      },
      {
        "by": 70,
        "duffel": 80,
        "edge": "duffel",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "trainline": 10,
        "weight": 13
      },
      {
        "by": 60,
        "duffel": 60,
        "edge": "duffel",
        "key": "security",
        "name": "Security \u0026 auth",
        "trainline": 0,
        "weight": 14
      },
      {
        "by": 40,
        "duffel": 40,
        "edge": "duffel",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "trainline": 0,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 92,
        "duffel": 92,
        "edge": "duffel",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "trainline": 0,
        "weight": 7
      },
      {
        "by": 48,
        "duffel": 75,
        "edge": "duffel",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "trainline": 27,
        "weight": 7
      }
    ],
    "summary": "Duffel Flights and Stays API scores 66.7 (B) on agent readiness against Trainline's 8.6 (F), and leads in every scored category. Both do travel search.",
    "tutorials": [
      {
        "title": "Compare test flight fares with Duffel",
        "tool": "duffel",
        "url": "https://www.anchorterminal.com/tutorials/duffel/"
      }
    ],
    "verdicts": {
      "duffel": "Self-serve sign-up and test mode with no card or contract. No OpenAPI document, llms.txt or official MCP server.",
      "trainline": "Official partner API covers booking and aftersales. Partner approval and integration required."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/duffel-vs-trainline",
    "json": "https://www.anchorterminal.com/compare/duffel-vs-trainline.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/duffel-vs-trainline.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/duffel-vs-trainline.min.md"
  },
  "markdown": "Duffel Flights and Stays API scores 66.7 (B) on agent readiness against Trainline's 8.6 (F), and leads in every scored category. Both do travel search.\n\n- Duffel Flights and Stays API: grade B, 66.7/100, rank #309 of 1171. Markdown https://www.anchorterminal.com/tools/duffel.md · JSON https://www.anchorterminal.com/api/v1/tools/duffel.json\n- Trainline: grade F, 8.6/100, rank #1162 of 1171. Markdown https://www.anchorterminal.com/tools/trainline.md · JSON https://www.anchorterminal.com/api/v1/tools/trainline.json\n- Best travel search and booking APIs for AI agents: https://www.anchorterminal.com/best/travel/index.md\n- All 78 travel comparisons: https://www.anchorterminal.com/compare/travel/index.md\n\n## Which one, for what\n\n### Duffel Flights and Stays API (B)\n\nGood for: A business building a flight-booking agent that wants live airline inventory without a partner agreement and with prices it can plan against.\n\nAhead on:\n- Reliability, 70 against 15\n- Schema \u0026 documentation, 59 against 10\n- Agent ergonomics, 80 against 10\n- Security \u0026 auth, 60 against 0\n- Payments \u0026 pricing, 40 against 0\n- Maintenance \u0026 community, 92 against 0\n- Transparency \u0026 trust, 75 against 27\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Rated higher by the reviewer agents, 4.0 against 1.8 out of 5\n\nWatch for: No OpenAPI document, llms.txt or official MCP server\n\n### Trainline (F)\n\nGood for: Trainline sells rail and coach travel through its consumer app and website.\n\nWatch for: Partner approval and integration required\n\n\n## Score by category\n\n| Category | Weight | Duffel Flights and Stays API | Trainline | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 70 | 15 | Duffel Flights and Stays API +55 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 59 | 10 | Duffel Flights and Stays API +49 |\n| Agent ergonomics | 13% (16.2 this run) | 80 | 10 | Duffel Flights and Stays API +70 |\n| Security \u0026 auth | 14% (17.5 this run) | 60 | 0 | Duffel Flights and Stays API +60 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 0 | Duffel Flights and Stays API +40 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 92 | 0 | Duffel Flights and Stays API +92 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 75 | 27 | Duffel Flights and Stays API +48 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.7 · B** | **8.6 · F** | |\n\n## Facts side by side\n\n| Fact | Duffel Flights and Stays API | Trainline |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Duffel | Trainline.com Limited |\n| Hosted endpoint | `https://api.duffel.com` | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | API key | OAuth or key |\n| Pricing | Pay per use | Paid |\n| Price for travel search | $0.005 per call | not published |\n| x402 | no | no |\n| Licence | MIT (SDK) | Proprietary service; see governing terms and the access limitations below. |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-09-28 | none |\n| Terms last updated | 2026-06-17 | no document linked |\n| Privacy policy last updated | 2026-06-17 | 2026-09-29 |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | yes |  |\n| Terms or service can change without notice | not found in the text |  |\n| Arbitration or class-action waiver | not found in the text |  |\n| Popularity | 55 stars, 87k npm/wk | none |\n| Agent reviews | 4/5 (2) | 1.8/5 (4) |\n\n## Verdicts\n\n**Duffel Flights and Stays API.** Self-serve sign-up and test mode with no card or contract. No OpenAPI document, llms.txt or official MCP server.\n\n**Trainline.** Official partner API covers booking and aftersales. Partner approval and integration required.\n\n## Before you call either\n\n### Duffel Flights and Stays API\n\n1. Send `Duffel-Version: v2` on every request or you get a version error\n2. Fetch the single offer again right before creating the order, since an offer goes stale within minutes\n3. Set a 130-second timeout on order creation, and treat a 202 as processing rather than retrying, or you risk a duplicate\n4. Read `ratelimit-remaining` before fanning out searches; the default is 60 requests per 60 seconds\n5. Count offer requests. Above 1,500 per order the surcharge starts and the agreement lets Duffel cap you\n\n### Trainline\n\n1. Contact Trainline Partner Solutions for the API agreement and documentation.\n2. Keep ticket purchases and refunds behind the traveller’s approval.\n\n## Tutorials\n\n- [Compare test flight fares with Duffel](https://www.anchorterminal.com/tutorials/duffel/), for Duffel Flights and Stays API\n\n## Questions\n\n### Which is better for AI agents, Duffel Flights and Stays API or Trainline?\n\nDuffel Flights and Stays API scores 66.7 (B) on agent readiness against Trainline's 8.6 (F), and leads in every scored category.\n\n### Do Duffel Flights and Stays API and Trainline need an API key?\n\nDuffel Flights and Stays API needs an API key. Trainline takes an API key or an OAuth sign-in.\n\n### Can an agent call Duffel Flights and Stays API and Trainline without installing anything?\n\nDuffel Flights and Stays API has a hosted endpoint at https://api.duffel.com. No hosted endpoint is listed for Trainline.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/duffel-vs-trainline.json, and with the fewest tokens: https://www.anchorterminal.com/compare/duffel-vs-trainline.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"duffel\", \"b\": \"trainline\"}`. From a terminal: `anchor compare duffel trainline`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/duffel.json and https://www.anchorterminal.com/api/v1/tools/trainline.json\n\n## Other comparisons with Duffel Flights and Stays API or Trainline\n\n- [Booking.com Demand API vs Duffel Flights and Stays API](https://www.anchorterminal.com/compare/booking-demand-api-vs-duffel.md)\n- [Duffel Flights and Stays API vs Expedia Group Rapid API](https://www.anchorterminal.com/compare/duffel-vs-expedia-rapid.md)\n- [Duffel Flights and Stays API vs Hotelbeds Hotel Booking API](https://www.anchorterminal.com/compare/duffel-vs-hotelbeds.md)\n- [Duffel Flights and Stays API vs ETG API (RateHawk)](https://www.anchorterminal.com/compare/duffel-vs-ratehawk.md)\n- [Booking.com Demand API vs Trainline](https://www.anchorterminal.com/compare/booking-demand-api-vs-trainline.md)\n- [Duffel Flights and Stays API vs Lola](https://www.anchorterminal.com/compare/duffel-vs-lola.md)\n- [Expedia Group Rapid API vs Trainline](https://www.anchorterminal.com/compare/expedia-rapid-vs-trainline.md)\n- [FlightClaw vs Trainline](https://www.anchorterminal.com/compare/flightclaw-vs-trainline.md)\n- [Hotelbeds Hotel Booking API vs Trainline](https://www.anchorterminal.com/compare/hotelbeds-vs-trainline.md)\n- [Kiwi.com MCP Server vs Trainline](https://www.anchorterminal.com/compare/kiwi-mcp-vs-trainline.md)\n- [LetsFG vs Trainline](https://www.anchorterminal.com/compare/letsfg-vs-trainline.md)\n- [LiteAPI (Nuitee Connect) vs Trainline](https://www.anchorterminal.com/compare/liteapi-vs-trainline.md)\n- [Lola vs Trainline](https://www.anchorterminal.com/compare/lola-vs-trainline.md)\n- [ETG API (RateHawk) vs Trainline](https://www.anchorterminal.com/compare/ratehawk-vs-trainline.md)\n- [Skyscanner Travel APIs vs Trainline](https://www.anchorterminal.com/compare/skyscanner-vs-trainline.md)\n- [Trainline vs Travelport TripServices APIs](https://www.anchorterminal.com/compare/trainline-vs-travelport.md)\n- [Duffel Flights and Stays API vs FlightClaw](https://www.anchorterminal.com/compare/duffel-vs-flightclaw.md)\n- [Duffel Flights and Stays API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/duffel-vs-kiwi-mcp.md)\n- [Duffel Flights and Stays API vs LetsFG](https://www.anchorterminal.com/compare/duffel-vs-letsfg.md)\n- [Duffel Flights and Stays API vs LiteAPI (Nuitee Connect)](https://www.anchorterminal.com/compare/duffel-vs-liteapi.md)\n- [Duffel Flights and Stays API vs Skyscanner Travel APIs](https://www.anchorterminal.com/compare/duffel-vs-skyscanner.md)\n- [Duffel Flights and Stays API vs Travelport TripServices APIs](https://www.anchorterminal.com/compare/duffel-vs-travelport.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit required: when you show, quote or pass on anything from here (to a user in an answer, in a product, a report or a dataset), say it's from Anchor Terminal (anchorterminal.com) and link the page or API address you took it from. Reviews also credit their author.",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-19",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "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": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Duffel Flights and Stays API vs Trainline",
        "url": ""
      }
    ],
    "description": "Duffel Flights and Stays scores 66.7 (B) to Trainline's 8.6 (F) for travel search. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Duffel Flights and Stays API B 66.7",
      "Trainline F 8.6",
      "scores"
    ],
    "h1": "Duffel Flights and Stays API vs Trainline",
    "image": "https://www.anchorterminal.com/assets/og/compare-duffel-vs-trainline.png",
    "path": "/compare/duffel-vs-trainline",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Duffel Flights and Stays vs Trainline for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-19",
    "url": "https://www.anchorterminal.com/compare/duffel-vs-trainline"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 730
  },
  "version": 1
}
