MENU navbar-image

🤖 ScrapeFlow

Web Scraping API with JavaScript Rendering - Extract data from any website using our headless browser. Bypass anti-bot protections, execute JavaScript, and get clean HTML or JSON responses. Perfect for data mining, price monitoring, content aggregation, and SEO tools. Supports GET, POST, PUT methods, custom headers, geotargeting (US, GB, JP, BR, ZA, AU), screenshot capture, and CSS selector waiting.

POST /v1/scraper

requires authentication

Web Scraping API with JavaScript Rendering - Extract data from any website using our headless browser. Bypass anti-bot protections, execute JavaScript, and get clean HTML or JSON responses. Perfect for data mining, price monitoring, content aggregation, and SEO tools. Supports GET, POST, PUT methods, custom headers, geotargeting (US, GB, JP, BR, ZA, AU), screenshot capture, and CSS selector waiting.

Example request:
import requests
import json

url = 'https://api.steadyapi.com/v1/scrapeflow/scraper'
payload = {
    "url": "https:\/\/api.steadyapi.com\/",
    "method": "GET",
    "headers": {
        "Content-Type": "application\/json",
        "Authorization": "Bearer token"
    },
    "geo": "US",
    "render_js": true,
    "timeout": 10
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/scrapeflow/scraper';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'url' => 'https://api.steadyapi.com/',
            'method' => 'GET',
            'headers' => [
                'Content-Type' => 'application/json',
                'Authorization' => 'Bearer token',
            ],
            'geo' => 'US',
            'render_js' => true,
            'timeout' => 10,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://api.steadyapi.com/v1/scrapeflow/scraper"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "url": "https:\/\/api.steadyapi.com\/",
    "method": "GET",
    "headers": {
        "Content-Type": "application\/json",
        "Authorization": "Bearer token"
    },
    "geo": "US",
    "render_js": true,
    "timeout": 10
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://api.steadyapi.com/v1/scrapeflow/scraper" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"url\": \"https:\\/\\/api.steadyapi.com\\/\",
    \"method\": \"GET\",
    \"headers\": {
        \"Content-Type\": \"application\\/json\",
        \"Authorization\": \"Bearer token\"
    },
    \"geo\": \"US\",
    \"render_js\": true,
    \"timeout\": 10
}"

Example response (200, Success):


{
    "meta": {
        "version": "v1.0",
        "status": 200,
        "copywrite": "https://steadyapi.com",
        "status_code": 200,
        "headers": {
            "date": "Sat, 14 Feb 2026 19:57:52 GMT",
            "content-type": "application/json",
            "content-length": "136",
            "server": "cloudflare",
            "cache-control": "private, must-revalidate",
            "pragma": "no-cache",
            "expires": "-1",
            "set-cookie": "XSRF-TOKEN=eyJpdiI6ImhuQW1TVnl6RldDUkF4UElyQ3JnTWc9PSIsIn...",
            "content-encoding": "br",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block",
            "x-content-type-options": "nosniff",
            "nel": "{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}",
            "vary": "accept-encoding",
            "cf-cache-status": "DYNAMIC",
            "report-to": "{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=WHSxhKns%2BOQEimKsvvZ7%2BcVbVhvMa4wnhvh3RF2Gr86blUaQB%2B5FRMPtoqIPSrGJHmH5aw8JXEh2gSDt4SrFFDn4wL79cy%2BBaiYGVM%2FdNebtrONlFbcybnUjRigd\"}]}",
            "cf-ray": "9cdf23146c4aea6c-DEN",
            "alt-svc": "h3=\":443\"; ma=86400"
        }
    },
    "body": {
        "message": "Welcome to SteadyAPI! Please refer to our API documentation to learn how to interact with our API: https://docs.steadyapi.com"
    }
}
 

Example response (401, Unauthenticated):


{
    "message": "Unauthenticated."
}
 

Example response (404, Not Found):


{
    "success": false,
    "message": "Resource Not Found"
}
 

Example response (422, Error Validations):


{
    "message": "The ticker field is required.",
    "errors": {
        "ticker": [
            "The ticker field is required."
        ]
    }
}
 

Request      

POST v1/scrapeflow/scraper

Headers

Authorization Bearer {YOUR_AUTH_KEY}

Content-Type application/json

Body Parameters

url   string   

The webpage URL to render. Example: https://api.steadyapi.com/

method   string  optional  

HTTP method (GET, POST, PUT). Default: GET. Example: GET

headers   object  optional  

Custom headers as key-value pairs.

data   string  optional  

Request body data for POST/PUT requests. Can be JSON string or form-encoded string Ex: {"key":"value"}.

geo   string  optional  

Geotargeting location (US, GB, JP, BR, ZA, AU). Default: US. Example: US

render_js   boolean  optional  

Enable JavaScript rendering for dynamic websites. Default: true. Example: true

timeout   integer  optional  

Maximum wait time in seconds. Range: 10 to 30 seconds. Default: 10. Example: 10