JSON endpoint to JSON
Use
attr: 'json' when the target URL is already a JSON endpoint. Microlink fetches the URL, parses the full response body with JSON.parse, and returns native structured data instead of a string.The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://pokeapi.co/api/v2/pokemon/pikachu' URL with 'data', 'meta' & 'prerender' API parameters:
CLI Microlink API example
microlink https://pokeapi.co/api/v2/pokemon/pikachu&data.json.attr=jsoncURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://pokeapi.co/api/v2/pokemon/pikachu" \
-d "data.json.attr=json" \
-d "meta=false" \
-d "prerender=false"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://pokeapi.co/api/v2/pokemon/pikachu', {
data: {
json: {
attr: "json"
}
},
meta: false,
prerender: false
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://pokeapi.co/api/v2/pokemon/pikachu",
"data.json.attr": "json",
"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://pokeapi.co/api/v2/pokemon/pikachu",
data.json.attr: "json",
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://pokeapi.co/api/v2/pokemon/pikachu",
"data.json.attr" => "json",
"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://pokeapi.co/api/v2/pokemon/pikachu")
q.Set("data.json.attr", "json")
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://pokeapi.co/api/v2/pokemon/pikachu', {
data: {
json: {
attr: "json"
}
},
meta: false,
prerender: false
})Read the parsed endpoint payload from
data.json.Return JSON directly
Add
embed: 'json' when the API URL itself should return the parsed JSON field:The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://pokeapi.co/api/v2/pokemon/pikachu' URL with 'data', 'meta', 'prerender' & 'embed' API parameters:
CLI Microlink API example
microlink https://pokeapi.co/api/v2/pokemon/pikachu&data.json.attr=json&embed=jsoncURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://pokeapi.co/api/v2/pokemon/pikachu" \
-d "data.json.attr=json" \
-d "meta=false" \
-d "prerender=false" \
-d "embed=json"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://pokeapi.co/api/v2/pokemon/pikachu', {
data: {
json: {
attr: "json"
}
},
meta: false,
prerender: false,
embed: "json"
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://pokeapi.co/api/v2/pokemon/pikachu",
"data.json.attr": "json",
"meta": "false",
"prerender": "false",
"embed": "json"
}
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://pokeapi.co/api/v2/pokemon/pikachu",
data.json.attr: "json",
meta: "false",
prerender: "false",
embed: "json"
}
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://pokeapi.co/api/v2/pokemon/pikachu",
"data.json.attr" => "json",
"meta" => "false",
"prerender" => "false",
"embed" => "json"
];
$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://pokeapi.co/api/v2/pokemon/pikachu")
q.Set("data.json.attr", "json")
q.Set("meta", "false")
q.Set("prerender", "false")
q.Set("embed", "json")
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://pokeapi.co/api/v2/pokemon/pikachu', {
data: {
json: {
attr: "json"
}
},
meta: false,
prerender: false,
embed: "json"
})The response is JSON, so a worker or backend job can consume it without reading a nested
data.json field.The same request as a raw URL:
https://api.microlink.io?url=https://pokeapi.co/api/v2/pokemon/pikachu&data.json.attr=json&meta=false&prerender=false&embed=jsonKeep the whole response body
attr: 'json' is whole-page only. Do not combine it with selector or selectorAll; Microlink parses the entire endpoint response.{
url: 'https://pokeapi.co/api/v2/pokemon/pikachu',
data: {
json: {
attr: 'json'
}
},
meta: false,
prerender: false
}The original JSON shape is preserved as structured data. Strings that contain HTML-like text, such as
"<b>bold</b>", stay as strings and are not interpreted as DOM markup.When to use it
| Need | Use |
|---|---|
| Fetch a REST API through Microlink | attr: 'json' |
| Keep response metadata next to the parsed payload | leave embed out |
| Return the parsed field as the API response | add embed: 'json' |
| Extract content from an HTML page | use text, markdown, or html instead |
Next step
Use Data extraction: Extract JSON for the full rule behavior. Use Web page to Text when the source is an HTML page, or PDF file to Markdown when the source URL points directly to a PDF file.