Skip to content

The ScraperAPI alternative that prices every URL the same

On ScraperAPI a page costs 1 credit, or 5, or 25, or 30, decided by the domain in the URL and the flags on the request. Microlink counts one request per API call: the same price rendered, the same price proxied, the same price whatever the host.

The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://news.ycombinator.com' URL with 'data' API parameter:

CLI Microlink API example

microlink https://news.ycombinator.com&data.titles.selectorAll='.titleline > a'&data.titles.attr=text

cURL Microlink API example

curl -G "https://api.microlink.io" \
  -d "url=https://news.ycombinator.com" \
  -d "data.titles.selectorAll=.titleline%20%3E%20a" \
  -d "data.titles.attr=text"

JavaScript Microlink API example

import createClient from 'microlink.io'

const microlink = createClient()

const { titles } = await microlink.extract('https://news.ycombinator.com', {
  titles: {
    selectorAll: ".titleline > a",
    attr: "text"
  }
})

Python Microlink API example

import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://news.ycombinator.com",
    "data.titles.selectorAll": ".titleline > a",
    "data.titles.attr": "text"
}

response = requests.get(url, params=querystring)

print(response.json())

Ruby Microlink API example

require 'uri'
require 'net/http'

base_url = "https://api.microlink.io/"

params = {
  url: "https://news.ycombinator.com",
  data.titles.selectorAll: ".titleline > a",
  data.titles.attr: "text"
}

uri = URI(base_url)
uri.query = URI.encode_www_form(params)

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
response = http.request(request)

puts response.body

PHP Microlink API example

<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://news.ycombinator.com",
    "data.titles.selectorAll" => ".titleline > a",
    "data.titles.attr" => "text"
];

$query = http_build_query($params);
$url = $baseUrl . '?' . $query;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET"
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #: " . $err;
} else {
    echo $response;
}

Golang Microlink API example

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io"
)

func main() {
    baseURL := "https://api.microlink.io"

    u, err := url.Parse(baseURL)
    if err != nil {
        panic(err)
    }
    q := u.Query()
    q.Set("url", "https://news.ycombinator.com")
    q.Set("data.titles.selectorAll", ".titleline > a")
    q.Set("data.titles.attr", "text")
    u.RawQuery = q.Encode()

    req, err := http.NewRequest("GET", u.String(), nil)
    if err != nil {
        panic(err)
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}

The URL decides the bill.

ScraperAPI publishes a credit cost per domain and per flag. The same code pointed at a different host costs 5, 25 or 30 times more, and asking for a rendered page costs 10. A $49 plan is worth 100,000 pages or 1,333, decided per request rather than at checkout.
RequestCreditsPages for $49
Standard domain, no flags1 credit100,000 pages
Amazon, Walmart or eBay5 credits20,000 pages
JavaScript rendering10 credits10,000 pages
Cloudflare, DataDome, PerimeterX or Akamai bypass10 credits10,000 pages
Google or Bing25 credits4,000 pages
Premium proxy, rendered25 credits4,000 pages
LinkedIn30 credits3,333 pages
Ultra premium proxy, rendered75 credits1,333 pages
Microlink, any of the above1 request46,000 pages
Credit costs are ScraperAPI's own, published in credits and requests costs; the $49 Hobby plan and its 100,000 credits come from their pricing page, which runs on to 21,500,000 credits at $1,975. The third column is that arithmetic, rounded down. The Microlink row is the $49 Pro plan on pricing: 46,000 requests, $1.07 per 1,000 on every tier, and a cache hit not counted at all. Read the crossover plainly: while a ScraperAPI request stays under 2.17 credits it buys more pages than Microlink does for the same $49. At 5 credits, and at every published step above that, Microlink buys more. Ultra premium is paid plans only, and ScraperAPI bills successful requests, 404s included, plus any request the client cancels before 70 seconds.

One request Whatever it returns

2.0
secs
P95 metadata
2.8
secs
P95 screenshot
99.9
%
SLA Guaranteed

Start free, scale when ready

One request counted whether the call renders, proxies, or lands on a domain somebody else charges 30 credits for, and a cache hit not counted at all. Start on the free API key and move to a paid plan when the daily ceiling gets in the way.

Pro

For production workloads.
$49/month
≈ $1.07 per 1,000 requests
46,000 requests / month
Cancel anytime · No setup fees

Business & Enterprise

Bought the way companies buy.
Enterprise adds

Feature by feature, side by side.

Both APIs take a URL and give back the page. What differs is the unit on the invoice, what arrives with the HTML, and what is on without asking. Every ScraperAPI row is taken from their documentation and pricing page, the last three included, where ScraperAPI has capabilities Microlink does not.
CapabilityMicrolinkScraperAPI
Billing unit
ScraperAPI: 1 credit flat, 5 on Amazon, Walmart and eBay, 25 on Google and Bing, 30 on LinkedIn, 10 to render, 10 to bypass an anti-bot system, 75 for an ultra premium proxy with rendering. A Microlink request costs the same whatever it carries.
1 request1–75 credits
Browser rendering included
Microlink runs Chrome by default, and prerender defaults to auto so a page that needs no browser takes the plain HTTP path. On ScraperAPI rendering is the render flag, priced above a flat fetch.
✓Opt-in, 10 credits
Response caching
Microlink cache hits do not count against the quota. ScraperAPI caching applies only to requests carrying ultra_premium and serves values no older than 10 minutes.
1 minute to 31 days10 minutes, ultra premium
Pick the exit country
Microlink proxy.location takes any of 181 ISO country codes on any Pro plan. ScraperAPI limits Hobby and Startup to the US and EU regions, with individual country codes from the Business plan up.
181 countriesUS and EU until $299
Concurrency
ScraperAPI sells concurrent threads per plan, 20 on Hobby up to 500 on Advanced. Microlink applies no throttling on paid plans, where parallel requests are bounded by the monthly quota; the free API key runs 2 at a time.
No throttling on Pro20 to 500 threads
Page metadata
Title, description, author, date, logo, image and publisher, normalized for any URL. ScraperAPI returns the HTML, or parsed JSON on the domains it supports.
✓✕
PDF of the page
pdf: true on any Microlink request. ScraperAPI documents no PDF output.
✓✕
Screenshots
One Microlink request returns the image. ScraperAPI documents screenshot capture under JavaScript rendering, priced at 10 credits.
✓10 credits
Markdown and text
ScraperAPI output_format takes markdown or text at no extra credit. Microlink converts the page, and also PDFs and office documents.
✓✓
Structured extraction
Microlink data rules target any site with selector, selectorAll, regex and ordered fallbacks. ScraperAPI parses a fixed list of retail and search domains, or a parser you train.
Any siteNamed domains
Lighthouse and technology detection
A Lighthouse report and the detected stack for any URL.
✓✕
Page interaction
click, scroll and waitForSelector on Microlink; the rendering instruction set on ScraperAPI.
✓✓
Bring your own proxy
Microlink takes a proxy server URL so a pool you already pay for is used. ScraperAPI documents its own pools and its own proxy port.
✓Not documented
MCP server✓✓
Free tier
The free Microlink API key renews 25 requests every day with no card and no expiry, and 5 a day need no key at all. ScraperAPI starts with a 7-day trial of 5,000 credits, then a free plan of 1,000 credits a month.
25/day1,000/month
Asynchronous jobs
ScraperAPI takes up to 50,000 URLs per batch job and retries for up to 24 hours, returning results from a status URL or a webhook. Microlink is synchronous.
✕✓
Sticky sessions
ScraperAPI session_number keeps consecutive requests on one IP, expiring 15 minutes after the last use. Microlink has no session parameter.
✕✓
Parsers for retail domains
Structured endpoints for Amazon, Walmart, eBay, Home Depot and more, in JSON or CSV.
✕✓
Last verified: October 2026. Check each product’s docs for the latest.

When ScraperAPI is the better pick.

A comparison page that only flatters the vendor writing it is worth nothing. Five cases where the answer is ScraperAPI.
  • Jobs that run without you

    The Async API takes up to 50,000 URLs in one batch, keeps retrying each page for up to 24 hours, and delivers results through a status URL or a webhook. Microlink is synchronous: you hold the connection, and the retrying and the queue are yours to build.
  • Parsers somebody else maintains

    Structured endpoints return clean JSON or CSV for Amazon, Walmart, eBay, Home Depot and other named domains, and an AI parser can be trained for the rest. Microlink extraction is declarative CSS and regex, precise and repeatable, but you write the selector and you fix it when the markup moves.
  • A concurrency number in writing

    Every plan states concurrent threads, from 20 on Hobby to 500 on Advanced and higher on Enterprise. Microlink applies no throttling on paid plans, which is better in practice and worse on paper: there is no published figure to size a worker pool against.
  • Static HTML at the lowest price

    A flat request with no flags is 1 credit, so the $49 plan works out at $0.49 per 1,000 pages against $1.07 on Microlink. If the targets are static, nothing needs a browser and metadata is not the point, ScraperAPI is cheaper per page.
  • Volume past the self-serve ceiling

    Published plans run to 21,500,000 credits a month at $1,975, with Enterprise above that. Microlink self-serve Pro tops out at 420,000 requests a month, so anything larger is a conversation rather than a checkout.

Product Information

What changes, what does not, and what a migration actually involves.

No, the request shape is different. ScraperAPI takes an api_key and a url plus flags such as render, premium and ultra_premium; Microlink takes a url plus the products you want back, such as a data block, a screenshot or a pdf. Most migrations are a single call site: the target URL stays the same, render becomes the default behaviour, premium becomes proxy, country_code becomes proxy.location, and output_format becomes a data rule.

How do credits compare to requests?

A credit is not a page. On ScraperAPI a flat fetch is 1 credit, an Amazon, Walmart or eBay page is 5, a Google or Bing page is 25, a LinkedIn page is 30, rendering is 10, an anti-bot bypass is 10, and an ultra premium proxy with rendering is 75. Microlink charges one request per API call whatever the call does, so the number on the plan is the number of pages. Compare by pages, not by the headline credit figure: while a ScraperAPI request stays under 2.17 credits it buys more pages than Microlink does for the same money.
No. One API call is one request on every host, so pointing the same code at a retail product page, a search engine or a social profile costs what any other page costs. ScraperAPI publishes a credit multiplier per domain category, which is why the same loop can cost 1 credit or 30 depending on where it points.

Can I pick the country a request comes from?

Yes. proxy.location takes any of 181 ISO country codes and works on any Pro plan, and proxy.url routes through a proxy server you supply instead. ScraperAPI limits Hobby and Startup to the US and EU regions, with individual country codes from the Business plan at $299 up.

Do cached responses still cost a request?

No. A response served from cache inside its ttl window does not count against your usage: no browser boots, and the stored response returns from the edge in milliseconds. Set ttl anywhere from 1 minute to 31 days to decide how often a URL is fetched again. ScraperAPI caching applies only to requests carrying ultra_premium and serves values no older than 10 minutes. See caching.

Is there a concurrency limit to plan around?

The two APIs answer this differently. ScraperAPI sells concurrency as a plan attribute, from 20 threads on Hobby to 500 on Advanced, so a pool of workers is sized against that figure. Microlink applies no throttling on paid plans and does not sell parallelism as a tier, so throughput is bounded by the monthly quota rather than bought up, but there is no contractual number to design against either.

What happens to a request that fails?

Microlink retries internal browser errors with exponential backoff, twice by default, inside the same call. There is no job queue: a page that keeps failing comes back as an error for your code to handle. ScraperAPI bills successful responses, 200 and 404 included, plus any request the client cancels before 70 seconds, and its Async API keeps retrying a job in the background for up to 24 hours.

What does the free tier include?

A free API key with 25 requests per day and every Pro capability, no credit card. Screenshot, PDF, metadata, markdown, search, insights and the SDK are included, along with the edge cache, proxy and adblock. Unauthenticated calls get 5 a day with no signup at all. ScraperAPI starts with a 7-day trial of 5,000 credits, then a free plan of 1,000 credits a month.

Start building

Point one request at the URL you are scraping today and compare the response with the one you get back now.
Get your free API key
25 requests/day · Every Pro feature · No credit card
Trusted with 100M+ requests every month