```yaml
product: AlterLab
title: Migrate from Subscription to Pay-As-You-Go Scraping API
category: Tutorials
comparison_context: "AlterLab is an alternative to Firecrawl, ScrapingBee, and Bright Data."
last_updated: 2026-09-03
canonical_facts:
  - "Learn how to switch from a fixed subscription to a usage-based scraping API, cut costs, and scale efficiently with practical code examples and a step‑by‑step migration guide."
source_url: https://alterlab.io/blog/migrate-from-subscription-to-pay-as-you-go-scraping-api
```

## TL;DR
To migrate from a subscription‑based scraping API to a pay‑as‑you‑go model, audit your current usage, update your authentication to use a simple API key, and adjust any usage‑based throttling or concurrency settings to match the new pricing. The code changes are minimal—often just removing any plan‑specific headers—and you start paying only for what you actually scrape.

## Understanding the Two Models
Subscription plans lock you into a fixed monthly fee for a preset number of requests or a concurrency limit. If you scrape less than the quota, you overpay; if you need more, you either upgrade to a higher tier or hit hard limits. Pay‑as‑you‑go flips this: you pay a set price per successful request (or per page) and there is no monthly minimum. This model aligns cost directly with value received and eliminates wasted spend.

For engineering teams, the operational impact is low. Authentication usually stays the same (API key or token). Rate limits may shift from “requests per minute per plan” to a global burst limit, which you can handle with standard retry‑backoff logic.

## Auditing Your Current Usage
Before you change anything, gather data from your existing logs or dashboard:

- Total successful requests per month
- Average requests per day and peak hourly rate
- Percentage of requests that fall back to higher tiers (e.g., JavaScript rendering)
- Average response size (helps estimate bandwidth cost if applicable)

Export this data to CSV and calculate a rough monthly cost using the provider’s published per‑request rate. For example, if AlterLab charges $0.001 per successful scrape and you average 2 million requests per month, the estimated cost is $2 000. Compare that to your current subscription fee to see the potential saving.

## Step‑by‑Step Migration Guide
Follow these steps to move your scraper to a pay‑as‑you‑go plan without downtime.

### 1. Create a Pay‑As‑You‑Go Account
Sign up for a new account (or switch your existing organization) and select the usage‑based option in the billing dashboard. You will receive a fresh API key; keep the old key active until you verify the migration.

### 2. Update Authentication in Code
Replace any plan‑specific headers or tokens with the new API key. Most clients accept the key via an `X-API-Key` header or as a parameter.

### 3. Adjust Concurrency and Retry Settings
Subscription plans often reserved a fixed number of concurrent slots. In a pay‑as‑you‑go model, concurrency is usually limited by a global rate limit (e.g., 10 requests per second). Implement a token‑bucket or leaky‑bucket limiter if your code does not already have one.

### 4. Validate with a Canary Run
Route a small percentage of traffic (e.g., 5 %) to the new key while keeping the majority on the old subscription. Monitor success rates, latency, and cost per request. If metrics look good, gradually increase the shift.

### 5. Decommission the Subscription
Once 100 % of traffic uses the pay‑as‑you‑go key and you have confirmed stable performance for at least one full billing cycle, cancel the subscription plan to avoid double charges.

## Practical Code Examples
Below are identical scraping calls using the AlterLab Python SDK and raw cURL. Both demonstrate how to send a request with an API key and handle the response.

```python title="scraper_sdk.py" {3-5}
import alterlab

# Initialize client with your pay‑as‑you‑go API key
client = alterlab.Client("YOUR_API_KEY")   # highlighted

# Perform a scrape; the library automatically handles retries and proxy rotation
response = client.scrape("https://example.com/product-listing")  # highlighted

# Raise for HTTP errors; inspect response.json() for structured data
if response.status_code == 200:
    data = response.json()
    print(f"Scraped {len(data.get('items', []))} items")
else:
    response.raise_for_status()
```

```bash title="Terminal" {2-4}
curl -X POST https://api.alterlab.io/v1/scrape \
  -H "X-API-Key: YOUR_API_KEY" \   # highlighted
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/product-listing", "formats": ["json"]}'  # highlighted
```

Both snippets assume you have already installed the SDK (`pip install alterlab`) or have `curl` available. The core logic—setting the header, sending the JSON payload, and checking the status code—remains unchanged from a subscription‑based implementation.

## Cost Comparison Infographic
- **99.2%** — Success Rate
- **1.2s** — Avg Response
- **10M+** — Pages Scraped

## Migration Process Flow
1. **Audit Usage** — 
2. **Create Pay‑As‑You‑Go Account** — 
3. **Update Authentication** — 
4. **Adjust Concurrency** — 
5. **Canary Run** — 
6. **Full Cutover** — 

## Try It Yourself
<div data-infographic="try-it" data-url="https://example.com" data-description="Try scraping this page with AlterLab"></div>

## Best Practices for Pay‑As‑You‑Go Scraping
1. **Monitor Real‑Time Spend** – Enable usage alerts in the dashboard so you are notified when daily spend crosses a threshold you define.
2. **Implement Exponential Backoff** – Transient HTTP 429 or 502 responses should trigger a retry with increasing delay; this protects your budget from wasted requests.
3. **Leverage Built‑In Parsing** – If you need structured output, request `formats=["json"]` or `formats=["markdown"]` to avoid post‑processing overhead.
4. **Cache Idempotent Requests** – For data that changes infrequently (e.g., product catalogs updated daily), store responses and reuse them within a freshness window.
5. **Review Tier Escalation Logic** – Some APIs automatically upgrade to a higher rendering tier when JavaScript or CAPTCHA is detected. Ensure your code does not inadvertently trigger costly tiers unless necessary.

## Takeaway
Migrating to a pay‑as‑you‑go scraping API is primarily an operational change, not a code rewrite. By auditing usage, updating authentication, and adjusting concurrency controls, you move from a fixed cost model to one that scales precisely with your data collection needs. The result is lower waste, clearer cost predictability, and the freedom to scale up or down without plan changes. Start with a canary rollout, validate metrics, and then cut over the subscription—your pipelines will keep running, and your bill will reflect only what you actually use.

## Frequently Asked Questions

### What is pay‑as‑you-go pricing for a web scraping API?

Pay‑as‑you-go charges you only for the successful scrape requests you make, typically measured per page or per API call, with no monthly minimum or fixed fee.

### How do I estimate my usage before switching to a usage‑based plan?

Review your historical scrape volume (requests per day, success rate, average response size) and multiply by the provider’s per‑request cost to forecast monthly spend.

### Can I keep using the same API endpoints after migrating to pay‑as‑you-go?

Yes, the endpoint URLs and authentication method stay the same; only the billing model changes, so your existing code requires no endpoint updates.

## Related

- [Fixing Cloudflare Clearance and Release History Issues](<https://alterlab.io/blog/fixing-cloudflare-clearance-and-release-history-issues>)
- [Credit-Based vs Dollar-Balance Scraping APIs](<https://alterlab.io/blog/credit-based-vs-dollar-balance-scraping-apis>)
- [Why Developers are Switching to Pay-As-You-Go Scraping](<https://alterlab.io/blog/why-developers-are-switching-to-pay-as-you-go-scraping>)