OpenAPI Directory & API Specs Scraper (APIs.guru) avatar

OpenAPI Directory & API Specs Scraper (APIs.guru)

Pricing

from $0.50 / 1,000 results

Go to Apify Store
OpenAPI Directory & API Specs Scraper (APIs.guru)

OpenAPI Directory & API Specs Scraper (APIs.guru)

$0.5/1K πŸ”₯ OpenAPI directory scraper! 2500+ APIs with machine-readable spec URLs, providers & categories. No key. JSON, CSV, Excel or API in seconds. Automate integration research ⚑

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

OpenAPI Directory & API Specs Scraper (APIs.guru) β€” 2,500+ APIs, No API Key

Scrape the APIs.guru OpenAPI directory β€” the largest open, machine-readable index of public REST APIs β€” into a clean dataset. One row per API with the OpenAPI/Swagger spec URL (JSON + YAML), all published versions, the provider, categories, contact, license, terms, logo and β€” optionally β€” the actual path and operation counts parsed from the spec itself.

No API key. No login. No proxy required.

Why this actor

APIs.guru is the "Wikipedia for Web APIs": ~2,529 APIs, ~3,992 specs and ~108,000 endpoints, kept in sync with the upstream providers (AWS, Azure, Google, Twilio, Adyen, GitHub, eBay, Stripe-likes, government open data and hundreds more). This actor turns that directory into a flat, spreadsheet-friendly dataset you can filter, join and feed into code generators.

How is this different from public-apis-scraper?

openapi-directory-scraper (this actor)public-apis-scraper
SourceAPIs.guru /v2/list.json β€” a machine-readable OpenAPI directoryThe public-apis curated markdown list on GitHub
Per-API dataActual OpenAPI/Swagger spec URLs (JSON + YAML), spec version (2.0 / 3.x), every published version, spec origin URL, license, terms, contact, logoName, description, auth type, HTTPS/CORS flag, doc link
Machine usableYes β€” spec URLs can be fed straight into codegen / linting / mockingNo β€” human-curated links only
Endpoint countsOptional: downloads each spec and counts paths + operationsNot available
Scale~2,500 APIs, ~4,000 specs, 677 providers~1,400 curated entries

They complement each other: use public-apis-scraper to discover free APIs a human curated, use this actor when you need the actual specs to build against.

Use cases

  • API discovery β€” find every public API in a category (cloud, financial, payment, ecommerce, open_data, messaging, machine_learning) with a real, downloadable spec.
  • Integration research β€” compare providers, check which spec version (Swagger 2.0 vs OpenAPI 3.x) an API ships, and grab licensing/terms links before you commit.
  • SDK generation pipelines β€” feed spec_url into openapi-generator, Speakeasy, Fern, Kiota or Prism to auto-build clients, mocks and test suites for hundreds of APIs at once.
  • Competitive API analysis β€” measure API surface size (path_count, operation_count) across competitors, track how many services a provider publishes, and monitor updated timestamps for API churn.

Input

FieldTypeDefaultDescription
modeselectapisapis = the full OpenAPI directory (one item per API). providers = the provider list with API counts.
providerFilterstring–Keep one provider only, e.g. azure.com, googleapis.com, amazonaws.com, twilio.com.
categoryFilterstring–Keep one APIs.guru category, e.g. cloud, financial, developer_tools.
searchQuerystring–Case-insensitive substring over API id, title and description, e.g. payment, weather.
countEndpointsbooleanfalseDownload each preferred spec and count paths + operations. One extra request per API, specs can be multi-MB β†’ much slower.
maxItemsinteger500Cap on pushed items (max 5,000).

Filters combine with AND.

Example input

{
"mode": "apis",
"categoryFilter": "financial",
"searchQuery": "payment",
"countEndpoints": false,
"maxItems": 200
}

Output

{
"type": "api",
"api_id": "1forge.com",
"provider": "1forge.com",
"service": null,
"title": "1Forge Finance APIs",
"description": "Stock and Forex Data and Realtime Quotes",
"preferred_version": "0.0.1",
"version_count": 1,
"all_versions": ["0.0.1"],
"openapi_version": "2.0",
"spec_url": "https://api.apis.guru/v2/specs/1forge.com/0.0.1/swagger.json",
"spec_yaml_url": "https://api.apis.guru/v2/specs/1forge.com/0.0.1/swagger.yaml",
"origin_url": "http://1forge.com/openapi.json",
"origin_format": "swagger",
"categories": ["financial"],
"logo_url": "https://api.apis.guru/v2/cache/logo/https_1forge.com_assets_images_f-blue.svg",
"contact_name": "1Forge",
"contact_email": "contact@1forge.com",
"contact_url": "http://1forge.com",
"license_name": null,
"license_url": null,
"terms_url": null,
"external_docs_url": null,
"homepage": "https://api.apis.guru/v2/specs/1forge.com/0.0.1.json",
"is_unofficial": false,
"added": "2017-05-30T08:34:14Z",
"updated": "2017-06-27T16:49:57Z",
"path_count": null,
"operation_count": null,
"source": "apis.guru",
"scraped_at": "2026-07-28T18:06:02.869003Z"
}

path_count and operation_count are null unless countEndpoints is enabled. With it on, e.g. groundhog-day.com returns path_count: 5, operation_count: 5.

Provider mode items:

{ "type": "provider", "provider": "googleapis.com", "api_count": 281, "source": "apis.guru", "scraped_at": "..." }

All fields are nullable β€” the upstream directory is community-maintained and not every API ships a license, contact or category.

Pricing

Roughly $0.5 per 1,000 items on Apify compute. The directory is a single 8 MB JSON download, so a full 2,500-API run without enrichment finishes in well under a minute. Enabling countEndpoints adds one HTTP request per API β€” keep maxItems low when you use it.

Notes & limits

  • Data comes from the public https://api.apis.guru/v2/ endpoints; APIs.guru is community-run and specs may lag behind the provider.
  • Specs larger than 8 MB are skipped during enrichment (counts stay null).
  • is_unofficial: true marks the ~25 specs APIs.guru maintains without the provider's blessing.
  • The actor only reads public, non-personal metadata.

Local development

pip install -r requirements.txt
python -m src.main
python tests/test_smoke.py # offline, stdlib only