Skip to content

One request. Any URL.

Microlink API

The headless browser cloud. We run the fleet. You get the output.

  • No API key required to start
  • 25 requests per day free
  • Cached across 340+ edge locations
Paste this into your agent.
Claude, Cursor, ChatGPT, or any agent that loads skills.
Install the Microlink skill. Run `npx -y skills add microlinkhq/skills/microlink`. It is the entry point for every Microlink product. Then use Microlink when I need a screenshot, PDF, markdown, or scrape from any URL.
One skill. It covers every Microlink product.

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

CLI Microlink API example

microlink https://github.com/

cURL Microlink API example

curl -G "https://api.microlink.io" \
  -d "url=https://github.com/"

JavaScript Microlink API example

import createClient from 'microlink.io'

const microlink = createClient()

const data = await microlink.metadata('https://github.com/')

Python Microlink API example

import requests

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

querystring = {
    "url": "https://github.com/"
}

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://github.com/"
}

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://github.com/"
];

$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://github.com/")
    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))
}

One endpoint, production-ready speed.

2.8
secs
Screenshot P95
2.0
secs
Metadata P95
99.9
%
SLA on paid plans

Call the API. No key needed.

The free endpoint is a GET. Pass a URL, read JSON. Add a key later when you need Search, more quota, a proxy, or a custom cache TTL.

  1. Pick any URL

    A public page is enough. The API detects when a page needs a headless browser, so client-rendered sites work as well as static HTML.
    https://github.com
  2. Hit api.microlink.io

    GET api.microlink.io with a url. Metadata comes back by default.
    ?url=https://github.com
  3. Ask for what you need

    Add screenshot, pdf, or markdown on the same request. Same endpoint, extra fields.
    &screenshot=true &data.markdown.attr=markdown
GET https://api.microlink.io?url=https://github.com&screenshot=true&data.markdown.attr=markdown

Everything you can build with the API

Every product runs on the same endpoint. Open one to see what it does and how to use it.

  • Screenshot API

    Pixel-perfect PNG or JPEG captures of any page, full page or a single element.
  • PDF API

    Print-ready PDFs from any URL, with paper size, margins, and page ranges.
  • Metadata API

    Normalized title, description, image, logo, and more from any page.
  • Markdown API

    Web pages, PDFs, and Office documents as clean markdown for LLMs.
  • HTML API

    Fully rendered HTML after JavaScript runs, for a page or one selector.
  • Text API

    Readable plain text from any page or document, without the markup.
  • Link preview API

    Slack-style link previews for any URL, built from one metadata call.
  • Embed API

    Ready-to-paste iframes for 300+ providers like YouTube and Spotify.
  • Logo API

    Logos, favicons, and brand color palettes for any website.
  • File conversion API

    PDF, Word, Excel, and PowerPoint files as HTML, markdown, or text.
  • Browser function API

    Run your own Puppeteer code on any page, with npm packages.
  • PRO

    Search API

    Google results as structured JSON: web, news, images, places, and more.

Use it from code, a terminal, or an agent

The endpoint is HTTP. These are the wrappers when you do not want to compose the query string by hand.

  • SDK

    One client for every product. Typed methods instead of query strings.
  • CLI

    Explore the API from your terminal during local development.
  • MCP

    Give an AI agent the same URL-to-data API you use in code.
  • Editor

    Write a request in the browser and run it before you integrate.

Start free, scale when ready

No signup, no API key, no credit card. 25 requests/day on the free plan. Pro is the same API with more quota and production controls.

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

Enterprise API controls, contracts, and support

Business is the Pro API, bought the way your company buys. Enterprise is the same API on hardware that serves only you.

  • Dedicated environment

    Your own API endpoint and browser pool on Enterprise. No shared capacity, no noisy neighbors.
  • 99.9% uptime SLA

    On every paid plan. Enterprise adds service credits and no rate limits, so traffic spikes are served, not throttled.
  • Your storage and CDN

    On Enterprise, your own asset store with no TTL cap and your own CDN across 340+ Cloudflare edge nodes.

Frequently asked questions

The questions that come up the first time you call the endpoint.

A REST API that turns any URL into structured data. Call api.microlink.io on the free plan, or pro.microlink.io with an API key.
Metadata is returned by default. Add query parameters for screenshots, PDFs, markdown, embeds, or a browser function.

Do I need an API key?

Not to start. The free plan is 25 requests per day with no key and no credit card.
A Pro key unlocks Search, higher quota, proxy, custom headers, and configurable TTL.

What can I get from one request?

Normalized metadata by default: title, description, image, logo, and more.
The same request can also return a screenshot, PDF, markdown, HTML, iframe embed, or the return value of a browser function. See combining workflows.
When you only need one of those, add meta=false to skip metadata, which is usually the biggest speedup. More in production patterns.

What does a response look like?

JSON with a status field: success, fail for a problem with the request, or error for a server-side issue. The payload lives in data.
Failed requests add a code such as EINVALURL or ERATE and a human-readable message. See the response format and error codes.

Can I use the API URL directly as an image or file?

Yes. Add embed with the field you want, such as embed=screenshot.url, and the API answers with that asset instead of JSON.
The request URL then works as an img src, an og:image, or a PDF download link. Keep API keys out of those URLs. See embedding screenshots.

How is this different from running Puppeteer myself?

You do not run browsers, proxies, caches, or a fleet.
Pages that need rendering run in an isolated browser, Pro adds a residential proxy when a site blocks you, and responses are cached at the edge. Cache hits are free.
When you need to crawl thousands of pages by following links, drive a live browser session interactively, or fetch static HTML that needs no rendering.
A crawler, a local Puppeteer or Playwright instance, or a plain HTTP client fits those better. See when something else is better.

How does caching work?

Every response is cached for 24 hours by default, and the x-cache-status header tells you whether it was a MISS or a HIT. Cache hits are free and fast. Add force to skip the cache.
On Pro, ttl sets anything from 1 minute to 31 days and staleTtl serves the cached copy while a fresh one is fetched. See the caching guide.

What happens when a site blocks the request?

On the free plan, a site behind antibot protection returns the EPROXYNEEDED error.
On Pro, Microlink names the antibot or CAPTCHA provider that blocked you and retries the same request through a residential proxy automatically. See the proxy guide.

What is included on the free plan?

25 requests per day on every product except Search, no credit card.
Adblock and cookie-banner dismissal are on by default. Pro adds Search, quota, proxy, custom headers, and configurable TTL. See pricing.

How do I know how much quota is left?

All requests return x-rate-limit-limit, x-rate-limit-remaining, and x-rate-limit-reset. The free endpoint reports the daily window. Pro reports your plan quota, resets at the start of the next month in UTC, and can lag the live counter by a few minutes. Past the limit you get HTTP 429 with the ERATE code.
There is no throttling, so parallel requests are fine within your quota. On Pro you are notified at 80% of your plan, and requests pause at 100% with no overage fees. See handling rate limits.

How do I authenticate?

Send your Pro token as the x-api-key request header to pro.microlink.io.
Do not put the key in frontend code. Use a proxy that allowlists your domains, as shown in authentication.

Where is the documentation?

The API reference lives in the docs.
Guides cover workflows, starting with what Microlink is and how a request works. The SDK has its own docs, and the OpenAPI spec is machine-readable.

Do you offer an enterprise API?

Yes. Business is Pro with invoicing, net 30, NDA, DPA, and a named contact.
Enterprise is a dedicated environment with your own endpoint, browser pool, storage, and CDN. Every paid plan has a 99.9% uptime SLA, and only Enterprise backs it with service credits. See Business & Enterprise.

Start now

Hit the endpoint with any URL. 25 requests/day, no account, no card.
No login needed
25 reqs/day free
No credit card