JSON endpoint to JSON
Use attr with
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 with
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 URL to Text, URL to Markdown, or URL to HTML when the source is a web page, PDF, or office document instead of a JSON endpoint.