Spider to AlterLab
Spider.cloud is a fast, Rust-based crawling API. AlterLab offers similar speed with more intelligent anti-bot bypass, LLM-powered extraction, and a broader endpoint suite including map and search.
Why Switch
Spider Limitations
- Limited anti-bot capabilities beyond basic proxy rotation
- No LLM-powered structured extraction
- Subscription-based pricing with monthly minimums
- Basic budget controls without per-path granularity
- No search endpoint for content discovery
AlterLab Advantages
- 5-tier anti-bot escalation with browser fingerprinting
- JSON Schema + LLM extraction for complex pages
- Pay-as-you-go with no subscriptions
- Per-path budget controls and include/exclude patterns
- Search endpoint for finding pages by content relevance
Concept Mapping
Spider and AlterLab share similar REST-based designs. Most concepts map directly:
| Spider | AlterLab | Notes |
|---|---|---|
POST /crawl | POST /v1/crawl | Similar endpoint, different body format |
request: "smart" | Automatic tier escalation | AlterLab auto-detects the right rendering mode |
request: "chrome" | Tier 3-4 (automatic) | Browser rendering activates when needed |
budget | max_pages + max_tier | Control both page count and cost tier |
return_format: "markdown" | formats: ["markdown"] | AlterLab supports multiple formats per request |
limit (page count) | max_pages | Same concept, different parameter name |
depth | max_depth | Maximum link-follow depth from seed URL |
| No equivalent | /v1/map | Discover all URLs without scraping content |
| No equivalent | /v1/search | Search a site or the web by query |
Code Migration
Similar API Design
Before (Spider)
import requests
response = requests.post(
"https://api.spider.cloud/crawl",
headers={
"Authorization": "Bearer YOUR_SPIDER_KEY",
"Content-Type": "application/json",
},
json={
"url": "https://example.com",
"limit": 10,
"depth": 2,
"request": "smart",
"return_format": "markdown",
}
)
data = response.json()
for page in data:
print(page["url"], page["content"][:100])After (AlterLab)
import requests
response = requests.post(
"https://api.alterlab.io/api/v1/crawl",
headers={
"X-API-Key": "sk_live_xxx",
"Content-Type": "application/json",
},
json={
"url": "https://example.com",
"max_pages": 10,
"max_depth": 2,
"formats": ["markdown"],
}
)
data = response.json()
for page in data["pages"]:
print(page["url"], page["content"]["markdown"][:100])import requests
response = requests.post(
"https://api.alterlab.io/api/v1/scrape",
headers={
"X-API-Key": "sk_live_xxx",
"Content-Type": "application/json",
},
json={
"url": "https://example.com",
"formats": ["markdown", "html"],
}
)
data = response.json()
if data.get("success"):
print(f"Content: {data['content']['markdown'][:200]}...")
print(f"Tier used: {data['tier_used']}")Feature Comparison
| Feature | Spider | AlterLab |
|---|---|---|
| Crawling | Yes | Yes |
| Site mapping | No | Yes |
| Search | No | Yes |
| Anti-bot tiers | 2 modes (http/chrome) | 5 tiers with auto-escalation |
| Structured extraction | No | JSON Schema + LLM |
| Markdown output | Yes | Yes |
| Budget controls | Global budget | Per-path + max_tier |
| Webhooks | Yes | Yes |
| PDF extraction | No | Yes |
| OCR | No | Yes |
| BYOP (own proxies) | No | Yes |
Pricing Comparison
Transparent Tier Pricing
| Use Case | Spider | AlterLab |
|---|---|---|
| HTTP scrape | 1 credit ($0.0002) | Tier 1: $0.0002/req |
| Smart mode | 2-5 credits ($0.0004-0.001) | Tier 2-3: $0.0003-0.002/req |
| Chrome rendering | 5-10 credits ($0.001-0.002) | Tier 4: $0.004/req |
| Minimum plan | $20/mo (Hobby plan) | No minimum |
Spider's per-credit cost depends on your plan tier. AlterLab has the same price regardless of volume. Both have competitive per-request rates; the key difference is AlterLab requires no subscription.
Common Gotchas
1. Auth header format differs
Spider uses Authorization: Bearer. AlterLab uses X-API-Key. Update your HTTP headers.
2. Parameter names differ slightly
Spider uses limit, depth, return_format. AlterLab uses max_pages, max_depth, formats (array).
3. Response structure is nested
Spider returns a flat array of pages. AlterLab returns {"pages": [...]} with each page having a content object containing format-specific fields.
4. No request mode parameter
Spider has request: "smart" | "chrome" | "http". AlterLab does not require this; it automatically selects the right rendering approach. Use max_tier if you want to limit the level of sophistication.
5. formats is an array
Spider uses return_format: "markdown" (singular string). AlterLab uses formats: ["markdown", "html"] (array), allowing multiple formats in a single request.