Troubleshooting
When metadata looks wrong, the cause is usually one of five things: the page did not render the right variant, the metadata is not present in the initial HTML, the request timed out, the site blocked automation, or the field you want is simply not exposed in a normalized way.
For timeouts, blocked sites, auth/plan errors, and debug headers that apply to all workflows, see common troubleshooting.
The fields are missing or null
If a page is client-rendered, start by forcing browser rendering:
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://vercel.com' URL with 'meta' & 'prerender' API parameters:
CLI Microlink API example
microlink https://vercel.com&meta.title&meta.description&prerendercURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://vercel.com" \
-d "meta.title=true" \
-d "meta.description=true" \
-d "prerender=true"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://vercel.com', {
meta: {
title: true,
description: true
},
prerender: true
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://vercel.com",
"meta.title": "true",
"meta.description": "true",
"prerender": "true"
}
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://vercel.com",
meta.title: "true",
meta.description: "true",
prerender: "true"
}
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://vercel.com",
"meta.title" => "true",
"meta.description" => "true",
"prerender" => "true"
];
$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://vercel.com")
q.Set("meta.title", "true")
q.Set("meta.description", "true")
q.Set("prerender", "true")
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://vercel.com', {
meta: {
title: true,
description: true
},
prerender: true
})When the initial HTML does not contain the metadata you need,
prerender: true can expose the real page state.If a field is still missing after that:
- Confirm the site actually exposes it.
- Try the default metadata set instead of a narrowed
metaobject. - Add a site-specific fallback with
datain extending results.
The page variant is wrong
Sometimes the metadata is correct for the page Microlink saw, but not for the variant you expected.
Common causes:
- Locale-specific content
- Logged-in vs logged-out variants
- Geofencing or regional content
- Request-header-based personalization
If that sounds like the problem, continue with private pages and use
headers, x-api-header-*, or proxy as needed.Still stuck
Check the full error codes reference or see common troubleshooting for timeout, auth, and plan errors. If the issue is auth-specific, return to private pages.
Back to guides
See the guides overview for more Microlink guides.