Page preparation
data rules run.Choose fetch mode first
prerender:The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://example.com' URL with 'data', 'meta' & 'prerender' API parameters:
CLI Microlink API example
microlink https://example.com&data.title.selector=h1&data.title.attr=textcURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://example.com" \
-d "data.title.selector=h1" \
-d "data.title.attr=text" \
-d "meta=false" \
-d "prerender=false"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://example.com', {
data: {
title: {
selector: "h1",
attr: "text"
}
},
meta: false,
prerender: false
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://example.com",
"data.title.selector": "h1",
"data.title.attr": "text",
"meta": "false",
"prerender": "false"
}
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://example.com",
data.title.selector: "h1",
data.title.attr: "text",
meta: "false",
prerender: "false"
}
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.bodyPHP Microlink API example
<?php
$baseUrl = "https://api.microlink.io/";
$params = [
"url" => "https://example.com",
"data.title.selector" => "h1",
"data.title.attr" => "text",
"meta" => "false",
"prerender" => "false"
];
$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://example.com")
q.Set("data.title.selector", "h1")
q.Set("data.title.attr", "text")
q.Set("meta", "false")
q.Set("prerender", "false")
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))
}import mql from '@microlink/mql'
const { data } = await mql('https://example.com', {
data: {
title: {
selector: "h1",
attr: "text"
}
},
meta: false,
prerender: false
})prerender: false when the page already contains the content in its initial HTML and does not need browser execution.| If the page | Use |
|---|---|
| Is static HTML or a simple server-rendered document | prerender: false |
| Might need a browser, but you are not sure | prerender: 'auto' (default) |
| Is client-rendered and comes back empty without browser execution | prerender: true |
javascript: false can be another useful speed and reliability lever.Render the right page variant
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://microlink.io' URL with 'data', 'meta' & 'device' API parameters:
CLI Microlink API example
microlink https://microlink.io&data.title.selector=h1&data.title.attr=text&device='iPhone 15 Pro'cURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://microlink.io" \
-d "data.title.selector=h1" \
-d "data.title.attr=text" \
-d "meta=false" \
-d "device=iPhone%2015%20Pro"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://microlink.io', {
data: {
title: {
selector: "h1",
attr: "text"
}
},
meta: false,
device: "iPhone 15 Pro"
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://microlink.io",
"data.title.selector": "h1",
"data.title.attr": "text",
"meta": "false",
"device": "iPhone 15 Pro"
}
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://microlink.io",
data.title.selector: "h1",
data.title.attr: "text",
meta: "false",
device: "iPhone 15 Pro"
}
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.bodyPHP Microlink API example
<?php
$baseUrl = "https://api.microlink.io/";
$params = [
"url" => "https://microlink.io",
"data.title.selector" => "h1",
"data.title.attr" => "text",
"meta" => "false",
"device" => "iPhone 15 Pro"
];
$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://microlink.io")
q.Set("data.title.selector", "h1")
q.Set("data.title.attr", "text")
q.Set("meta", "false")
q.Set("device", "iPhone 15 Pro")
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))
}import mql from '@microlink/mql'
const { data } = await mql('https://microlink.io', {
data: {
title: {
selector: "h1",
attr: "text"
}
},
meta: false,
device: "iPhone 15 Pro"
})device when the target site renders a different mobile or tablet variant.device— loads a known device preset, including viewport and user agent.viewport— overrides width, height, scale factor, and mobile flags when the preset is not enough.mediaType— switches between'screen'and'print', which matters when the site ships print-specific CSS.headersPRO— can shape locale or other request-dependent variants. See private pages.
Wait for dynamic content
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://dev.to' URL with 'data', 'meta', 'waitUntil' & 'waitForSelector' API parameters:
CLI Microlink API example
microlink https://dev.to&data.title.selector='main h1'&data.title.attr=text&waitUntil=domcontentloaded&waitForSelector='main h1'cURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://dev.to" \
-d "data.title.selector=main%20h1" \
-d "data.title.attr=text" \
-d "meta=false" \
-d "waitUntil=domcontentloaded" \
-d "waitForSelector=main%20h1"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://dev.to', {
data: {
title: {
selector: "main h1",
attr: "text"
}
},
meta: false,
waitUntil: "domcontentloaded",
waitForSelector: "main h1"
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://dev.to",
"data.title.selector": "main h1",
"data.title.attr": "text",
"meta": "false",
"waitUntil": "domcontentloaded",
"waitForSelector": "main h1"
}
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://dev.to",
data.title.selector: "main h1",
data.title.attr: "text",
meta: "false",
waitUntil: "domcontentloaded",
waitForSelector: "main h1"
}
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.bodyPHP Microlink API example
<?php
$baseUrl = "https://api.microlink.io/";
$params = [
"url" => "https://dev.to",
"data.title.selector" => "main h1",
"data.title.attr" => "text",
"meta" => "false",
"waitUntil" => "domcontentloaded",
"waitForSelector" => "main h1"
];
$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://dev.to")
q.Set("data.title.selector", "main h1")
q.Set("data.title.attr", "text")
q.Set("meta", "false")
q.Set("waitUntil", "domcontentloaded")
q.Set("waitForSelector", "main h1")
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))
}import mql from '@microlink/mql'
const { data } = await mql('https://dev.to', {
data: {
title: {
selector: "main h1",
attr: "text"
}
},
meta: false,
waitUntil: "domcontentloaded",
waitForSelector: "main h1"
})| Need | Best option |
|---|---|
| A good default navigation signal | waitUntil: 'auto' |
| Faster navigation before a selector wait | waitUntil: 'domcontentloaded' |
| Wait for a specific field or wrapper to appear | waitForSelector |
| Handle delayed hydration when there is no stable selector | waitForTimeout |
waitUntil when a page needs more than one lifecycle event.Change the page state first
adblock: true). That removes many ads, trackers, and consent layers before extraction.The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://microlink.io' URL with 'data', 'meta', 'click', 'scroll' & 'styles' API parameters:
CLI Microlink API example
microlink https://microlink.io&data.pricing.selector=#pricing&data.pricing.attr=text&click=#features&scroll=#pricing&styles='header, footer { display: none !important; }'cURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://microlink.io" \
-d "data.pricing.selector=#pricing" \
-d "data.pricing.attr=text" \
-d "meta=false" \
-d "click=#features" \
-d "scroll=#pricing" \
-d "styles=header%2C%20footer%20%7B%20display%3A%20none%20!important%3B%20%7D"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://microlink.io', {
data: {
pricing: {
selector: "#pricing",
attr: "text"
}
},
meta: false,
click: "#features",
scroll: "#pricing",
styles: [
"header, footer { display: none !important; }"
]
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://microlink.io",
"data.pricing.selector": "#pricing",
"data.pricing.attr": "text",
"meta": "false",
"click": "#features",
"scroll": "#pricing",
"styles": "header, footer { display: none !important; }"
}
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://microlink.io",
data.pricing.selector: "#pricing",
data.pricing.attr: "text",
meta: "false",
click: "#features",
scroll: "#pricing",
styles: "header, footer { display: none !important; }"
}
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.bodyPHP Microlink API example
<?php
$baseUrl = "https://api.microlink.io/";
$params = [
"url" => "https://microlink.io",
"data.pricing.selector" => "#pricing",
"data.pricing.attr" => "text",
"meta" => "false",
"click" => "#features",
"scroll" => "#pricing",
"styles" => "header, footer { display: none !important; }"
];
$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://microlink.io")
q.Set("data.pricing.selector", "#pricing")
q.Set("data.pricing.attr", "text")
q.Set("meta", "false")
q.Set("click", "#features")
q.Set("scroll", "#pricing")
q.Set("styles", "header, footer { display: none !important; }")
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))
}import mql from '@microlink/mql'
const { data } = await mql('https://microlink.io', {
data: {
pricing: {
selector: "#pricing",
attr: "text"
}
},
meta: false,
click: "#features",
scroll: "#pricing",
styles: [
"header, footer { display: none !important; }"
]
})adblock— keep the defaulttrueunless you explicitly need ads or consent flows visible.click— dismiss banners, open accordions, or switch tabs.scroll— trigger content that only loads when a section enters the viewport.styles— hide chrome or adjust layout with CSS before extraction.
Use scripts, modules, and function only when needed
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://microlink.io' URL with 'data', 'meta' & 'function' API parameters:
CLI Microlink API example
microlink https://microlink.io&data.content.selector=main&data.content.attr=html&function='({ page }) => page.evaluate(() => { document.querySelector('"'"'header'"'"')?.remove() })'cURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://microlink.io" \
-d "data.content.selector=main" \
-d "data.content.attr=html" \
-d "meta=false" \
-d "function=(%7B%20page%20%7D)%20%3D%3E%20page.evaluate(()%20%3D%3E%20%7B%20document.querySelector('header')%3F.remove()%20%7D)"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://microlink.io', {
data: {
content: {
selector: "main",
attr: "html"
}
},
meta: false,
function: "({ page }) => page.evaluate(() => { document.querySelector('header')?.remove() })"
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://microlink.io",
"data.content.selector": "main",
"data.content.attr": "html",
"meta": "false",
"function": '''({ page }) => page.evaluate(() => { document.querySelector('header')?.remove() })'''
}
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://microlink.io",
data.content.selector: "main",
data.content.attr: "html",
meta: "false",
function: "({ page }) => page.evaluate(() => { document.querySelector('header')?.remove() })"
}
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.bodyPHP Microlink API example
<?php
$baseUrl = "https://api.microlink.io/";
$params = [
"url" => "https://microlink.io",
"data.content.selector" => "main",
"data.content.attr" => "html",
"meta" => "false",
"function" => "({ page }) => page.evaluate(() => { document.querySelector('header')?.remove() })"
];
$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)
}
fn := `({ page }) => page.evaluate(() => { document.querySelector('header')?.remove() })`
q := u.Query()
q.Set("url", "https://microlink.io")
q.Set("data.content.selector", "main")
q.Set("data.content.attr", "html")
q.Set("meta", "false")
q.Set("function", fn)
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))
}import mql from '@microlink/mql'
const { data } = await mql('https://microlink.io', {
data: {
content: {
selector: "main",
attr: "html"
}
},
meta: false,
function: "({ page }) => page.evaluate(() => { document.querySelector('header')?.remove() })"
})function only for last-resort DOM automation. It runs with Puppeteer access before the extraction result is finalized.styleswhen CSS alone can solve it.modulesorscriptswhen you need a little JavaScript in the page.functionwhen you need full browser control.