# API Rate Limit Policy Extractor (`seeb/api-rate-limit-policy-extractor`) Actor

Extract API rate limits, quotas, burst rules, reset windows, overage behavior, and upgrade triggers from developer docs.

- **URL**: https://apify.com/seeb/api-rate-limit-policy-extractor.md
- **Developed by:** [Techionik](https://apify.com/seeb) (community)
- **Categories:** Developer tools, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$25.00 / 1,000 rate limit policies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## API Rate Limit Policy Extractor

Extract API rate limits, quotas, burst rules, reset windows, overage behavior, and upgrade triggers from developer docs.

### Why This Actor Is Useful

This actor extracts the API constraints that affect integration cost and reliability: request limits, reset windows, burst behavior, HTTP 429 rules, and upgrade triggers. It is useful before engineering teams commit to an API integration.

The actor is designed for developer docs, API policy pages, and pasted snippets. It keeps missing fields blank rather than inventing unavailable policy terms.

### What It Extracts

- `apiName` - API.
- `endpointOrPlan` - Endpoint or plan.
- `limitValue` - Limit.
- `window` - Window.
- `burstPolicy` - Burst policy.
- `resetPolicy` - Reset policy.
- `overageBehavior` - Overage behavior.
- `upgradeTrigger` - Upgrade trigger.
- `developerImpact` - Developer impact.
- `sourceUrl` - Source URL.
- `evidenceText` - Evidence.

### Practical Workflows

- Compare API quotas across vendors.
- Find throttling and upgrade risk before implementation.
- Build developer-experience scorecards.
- Monitor API policy pages for limit changes.

### Input

Paste one or more public API documentation, quota, usage-limit, throttling, plan-limit, or rate-limit policy URLs. The actor scans those docs and returns request limits, windows, reset rules, overage behavior, upgrade triggers, and developer impact.

- `startUrls` - Add public developer docs, API limits, quota, throttling, or pricing-limit pages that describe request limits.
- `sourceText` - Optional: paste API limit sections, quota tables, HTTP 429 notes, plan-limit text, or developer documentation snippets.
- `maxResults` - Stop after this many useful rows. Most users can leave this at 100.
- `requestTimeoutSecs` - How long to wait for each URL. Increase only for slow public pages.

### Example Input

```json
{
    "sourceText": [
        "FlowPay API docs: Standard plan allows 1,000 requests per minute for /v1/payments. Burst requests may be throttled. Rate limits reset every 60 seconds. Higher limits require Enterprise upgrade.",
        "DataDock developer guide says free apps receive 10,000 calls per day, 100 calls per minute per token. Exceeding quota returns HTTP 429 until midnight UTC."
    ],
    "maxResults": 10,
    "requestTimeoutSecs": 20
}
```

### Example Output

```json
{
    "apiName": "FlowPay",
    "endpointOrPlan": "Standard plan",
    "limitValue": "1,000 requests per minute for /v1/payments",
    "window": "60 second",
    "burstPolicy": "Burst requests may be throttled",
    "resetPolicy": "reset every 60 seconds",
    "overageBehavior": "throttled",
    "upgradeTrigger": "Higher limits require Enterprise upgrade",
    "developerImpact": "throttled",
    "sourceUrl": "pasted://source-1",
    "evidenceText": "FlowPay API docs: Standard plan allows 1,000 requests per minute for /v1/payments. Burst requests may be throttled. Rate limits reset every 60 seconds. Higher limits require Enterprise upgrade."
}
```

### Reliability Notes

The actor is intentionally lightweight and fast. It does not try to bypass captcha systems, private pages, paywalls, or login walls. When a site blocks direct fetching, paste the public visible text into `sourceText`; the same actor-specific parser will still produce structured rows.

### Limitations

- The actor extracts only information present in the supplied source.
- Missing source details remain blank instead of being guessed.
- Highly unusual wording may require pasted text or cleaner source snippets for best results.

### Output

Rows are written to the default Apify dataset with actor-specific fields and source evidence. The output is designed for spreadsheets, dashboards, client audits, procurement notes, SEO reports, developer research, and other marketplace buyer workflows.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more public API documentation, quota, usage-limit, throttling, plan-limit, or rate-limit policy URLs.

## `maxResults` (type: `integer`):

Stop after this many useful rows. Leave this at 100 for normal runs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api"
    }
  ],
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seeb/api-rate-limit-policy-extractor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api" }] }

# Run the Actor and wait for it to finish
run = client.actor("seeb/api-rate-limit-policy-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api"
    }
  ]
}' |
apify call seeb/api-rate-limit-policy-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,seeb/api-rate-limit-policy-extractor"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/oXbzoosNCj45S9GCj/builds/5WaNPBx8hLek4PdcU/openapi.json
