cURL
Scrape your first page from the command line using cURL — no language runtime required, just the API directly.
Last updated Apr 28, 2026
Hit the AnakinScraper REST API directly with curl. Useful for quick tests, shell scripts, CI pipelines, or any environment without a language runtime.
Authentication
Set your API key as an environment variable. Get a key from the Dashboard.
export ANAKIN_API_KEY=ak-your-key-hereThe base URL is https://api.anakin.io/v1. Every request authenticates via the X-API-Key header.
Install
curl is preinstalled on macOS, Linux, and most CI runners. The polling script below also uses jq for JSON parsing — install it once if you don't have it:
# macOS
brew install jq
# Debian / Ubuntu
sudo apt-get install jqSubmit a single request
Fire-and-forget submit, useful when you'll poll separately or check results later in the dashboard:
curl -X POST https://api.anakin.io/v1/url-scraper \
-H "X-API-Key: $ANAKIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'Response:
{
"jobId": "job_abc123xyz",
"status": "pending"
}Poll the job:
curl https://api.anakin.io/v1/url-scraper/job_abc123xyz \
-H "X-API-Key: $ANAKIN_API_KEY"Submit + poll in one script
Save as scrape.sh (chmod +x scrape.sh):
#!/bin/bash
set -e
: "${ANAKIN_API_KEY:?ANAKIN_API_KEY is not set}"
BASE="https://api.anakin.io/v1"
URL="${1:-https://example.com}"
submitted=$(curl -sS -X POST "$BASE/url-scraper" \
-H "X-API-Key: $ANAKIN_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"url\": \"$URL\"}")
job_id=$(echo "$submitted" | jq -r '.jobId')
for _ in $(seq 1 60); do
job=$(curl -sS "$BASE/url-scraper/$job_id" -H "X-API-Key: $ANAKIN_API_KEY") \
|| { sleep 3; continue; } # retry transient errors
status=$(echo "$job" | jq -r '.status')
case "$status" in
completed) echo "$job" | jq -r '.markdown'; exit 0 ;;
failed) echo "scrape failed: $(echo "$job" | jq -r '.error')" >&2; exit 1 ;;
esac
sleep 3
done
echo "timed out after 3 minutes" >&2
exit 1Run it:
./scrape.sh https://example.comWhat this does
- Submits the URL to
/url-scraperand gets back ajobId. - Polls
/url-scraper/{jobId}every 3 seconds (up to 60 attempts = 3 minutes). - Retries transient
curlerrors silently — only surfaces real failures. - Prints the final
markdownwhen the job completes.
Most jobs finish in 3–15 seconds.
Go further
Extract structured JSON with AI
Replace the submit body with generateJson: true to have AI return structured data:
curl -sS -X POST "$BASE/url-scraper" \
-H "X-API-Key: $ANAKIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://news.ycombinator.com", "generateJson": true}'The completed response includes a generatedJson field with structured data inferred from the page.
Scrape JavaScript-heavy sites
For SPAs and dynamically-loaded pages, add useBrowser: true:
curl -sS -X POST "$BASE/url-scraper" \
-H "X-API-Key: $ANAKIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/spa", "useBrowser": true}'Only use browser mode when needed — standard scraping is faster and cheaper.
Search the web with AI
The Search API is synchronous — no polling needed:
curl -sS -X POST https://api.anakin.io/v1/search \
-H "X-API-Key: $ANAKIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "best web scraping libraries 2025"}'Use it from CI
Drop the polling script into a GitHub Actions step or a cron job. The ANAKIN_API_KEY should come from a secret store (GitHub Secrets, Vault, Doppler, etc.) — never hard-code it:
# .github/workflows/scrape.yml
- name: Scrape pricing page
env:
ANAKIN_API_KEY: ${{ secrets.ANAKIN_API_KEY }}
run: ./scrape.sh https://example.com/pricing > pricing.md