# OpenAPI Breaking Change Detector and Endpoint Catalog

> OpenAPI breaking change detector: compare two specs for possible breaks, or list every endpoint from OpenAPI 2 or 3 JSON and YAML. Export JSON or CSV.

URL: https://cliqtomedia.com/actors/openapi-spec-catalog-diff/

Category: Developer & website monitoring · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Compare an old and a new OpenAPI spec and see possible breaking changes. Or turn a spec into a table with one row per endpoint. It works with OpenAPI 2.0, 3.0 and 3.1.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `https://api.apis.guru/v2/specs/apis.guru/2.2.0/openapi.json` in Specification URLs or APIs.guru IDs. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Turn public OpenAPI specs into an endpoint catalog, or compare two versions for possible breaking changes. Use public HTTPS JSON/YAML documents or APIs.guru IDs. No API key is needed to read the demo specs.





## Price

Prices will be shown after release.

## Questions

### Does no finding mean my clients are safe?

No. It is a structural check. It does not test real API calls.

### Which OpenAPI versions work?

OpenAPI 2.0, 3.0 and 3.1, in JSON or YAML. Version 3.2 is not supported.

### Is it a full spec validator?

No. It reads specs to list and compare them. It does not check every rule.

### Do I need an API key?

No key is needed to read public specs.

## Data fields

- `kind` (string): endpoint or change
- `api` (string): API title; null if absent; credential-like text redacted
- `version` (string): New/current API version
- `openapiVersion` (string): OpenAPI or Swagger version; catalog only
- `oldVersion` (string): Previous API version; diff only
- `method` (string): HTTP method, uppercase
- `path` (string): Endpoint path, at most 500 characters
- `operationId` (string): Operation identifier; null if absent
- `summary` (string): Operation summary; null if absent; sanitized and at most 500 characters
- `tags` (array): Operation tags
- `authSchemes` (array): Effective auth scheme names and types; no credential values
- `securityAlternatives` (array): OR alternatives containing AND schemes and scopes; [] means no auth required
- `deprecated` (boolean): True if marked deprecated
- `requestContentTypes` (array): Accepted request media types
- `responseContentTypes` (array): Response media types
- `parameters` (array): Effective parameter name, location, required, type; no examples/defaults
- `responseCodes` (array): Declared response status codes
- `changeType` (string): Detected structural change rule
- `severity` (string): breaking or non-breaking; conservative heuristic
- `details` (string): Short sanitized change explanation
- `provider` (string): OpenAPI document
- `sourceUrl` (string): Fetched public spec URL; no query/credentials
- `oldSourceUrl` (string): Previous spec URL; diff only
- `sourceUpdatedAt` (string): Directory update time or HTTP Last-Modified; null if unknown
- `fetchedAt` (string): UTC fetch time ISO 8601
- `licence` (string): Spec info.license.name; null if unknown
- `licenceUrl` (string): Spec licence URL without query/credentials; null if unknown

## Input settings

- `mode` (string): catalog exports operations. diff compares oldSpec and newSpec; specs is ignored.
- `specs` (array): Up to 20 public HTTPS spec URLs without query strings, or APIs.guru ID such as apis.guru or nasa.gov:apod. Use id@version to select a version. JSON/YAML, up to 5 MB each. Duplicates are checked once. Used in catalog mode.
- `oldSpec` (string): Required for diff: public HTTPS URL or APIs.guru id@version. No credentials, query strings or external references.
- `newSpec` (string): Required for diff: public HTTPS URL or APIs.guru id@version. An unchanged document returns zero changes successfully.
- `maxRows` (integer): Stop after 1–1000 saved endpoint/change rows. Default 1000. A row limit gives partial/ROW_LIMIT, never claims a full catalog.
- `breakingOnly` (boolean): In diff mode, keep breaking findings only. Default false. Does not reduce source downloads. Ignored in catalog.

## Step by step on Apify

1. Keep `mode` as `catalog`.
2. Keep the two small public spec URLs in the form.
3. Start the Actor with the default 300-second timeout. If you set a maximum charge, keep it above $0.05.
4. Open Endpoint catalog. The demo currently returns 8 operations from APIs.guru and NASA APOD.
5. Export JSON or CSV. You can then replace the URLs with your public specs.

## Use cases

- List the operations used by your integration team.
- Review a vendor's API version change before changing clients.
- Build an API inventory with methods, tags, auth types and licences.
- Feed possible breaks into a manual release review.

## Tips

- Read each finding yourself. The tool flags possible breaks, not proven ones.
- Use APIs.guru IDs to try it fast without finding spec URLs.
- Keep specs self-contained. External $ref links are not downloaded.

## Limits

No data calls are made to the API described by a spec. Requests fetch the documents and, when needed, the public directory only. This product is not endorsed by APIs.guru, NASA or API providers.

- At most 20 catalog inputs, 10000 operations per document, 10000 findings per comparison and 1000 saved rows. Catalog output is capped at 64 KB per row and 10 MB per document; schema comparison at 300000 steps. Large output is a cap, not a promise that every provider has that many operations.
- 5 MB per JSON spec, 1 MB per YAML spec; 12 MB for the APIs.guru index; 30 MB total downloaded bytes per run. Three redirect hops. At most 64 requests including retries.
- Network and body timeout: 15 seconds per request, up to three tries for transient connection errors or 429/5xx responses. A long Retry-After stops the run. Total source work is capped at 180 seconds, even if the platform timeout is longer. A shorter platform timeout shortens work.
- Only internal JSON-pointer `$ref` references are supported. External, file and unresolved references fail explicitly. Circular reference chains fail; recursive schemas are compared within depth and visited-pair limits.
- OpenAPI 3.2 is not supported. This is not a full spec or JSON Schema validator. Webhooks, callbacks, server changes, response headers, descriptions and full JSON Schema keyword semantics are outside the diff rules. Dynamic references and complex schema equivalence are not evaluated. Absence of findings does not prove compatibility.
- Changed security requirements and selected schema constraints are conservatively marked breaking. Removing a parameter or response property is also conservative. Read each finding before taking action.
- `ROW_LIMIT` or `CHARGE_LIMIT`: `SUCCEEDED`, with `status: partial`. The saved rows are usable.
- Source, parse, deadline or cancellation failure: `FAILED`; summary is `partial` when earlier rows remain, otherwise `error`. `NOT_FOUND` is a source error, not an unchanged API.

## Sample result

```json
{
  "api": "APOD",
  "version": "1.0.0",
  "openapiVersion": "3.0.0",
  "method": "GET",
  "path": "/apod",
  "operationId": null,
  "summary": "Returns images",
  "tags": ["request tag"],
  "authSchemes": [{"name": "api_key", "type": "apiKey"}],
  "securityAlternatives": [[{"name": "api_key", "scopes": []}]],
  "deprecated": false,
  "requestContentTypes": [],
  "responseContentTypes": ["application/json"],
  "parameters": [
    {"name": "date", "in": "query", "required": false, "type": "string"},
    {"name": "hd", "in": "query", "required": false, "type": "boolean"}
  ],
  "responseCodes": ["200", "400"],
  "kind": "endpoint",
  "provider": "OpenAPI document",
  "sourceUrl": "https://api.apis.guru/v2/specs/nasa.gov/apod/1.0.0/openapi.json",
  "sourceUpdatedAt": "Mon, 18 Aug 2025 11:00:32 GMT",
  "fetchedAt": "2026-10-13T15:03:22.269Z",
  "licence": "Apache 2.0",
  "licenceUrl": "http://www.apache.org/licenses/LICENSE-2.0.html"
}
```

## Similar tools

- [Link Route Audit — Bulk HTTP Status & Redirects](https://cliqtomedia.com/actors/bulk-url-status-redirect-checker/)
- [GitHub Releases Monitor & Scraper](https://cliqtomedia.com/actors/github-releases-monitor-scraper/)
- [Software End-of-Life Checker](https://cliqtomedia.com/actors/software-end-of-life-checker/)
- [Dependency Vulnerability Scanner (OSV)](https://cliqtomedia.com/actors/osv-dependency-vulnerability-scanner/)
- [GitHub Repositories & Users Search (No Login)](https://cliqtomedia.com/actors/github-search/)
- [SSL Certificate Checker: Expiry, Chain & CT, No Login](https://cliqtomedia.com/actors/ssl-certificate-inspector/)
