data
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://kikobeats.com' URL with 'data' API parameter:
CLI Microlink API example
microlink https://kikobeats.com&data.avatar.selector=#avatar&data.avatar.type=image&data.avatar.attr=srccURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://kikobeats.com" \
-d "data.avatar.selector=#avatar" \
-d "data.avatar.type=image" \
-d "data.avatar.attr=src"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://kikobeats.com', {
data: {
avatar: {
selector: "#avatar",
type: "image",
attr: "src"
}
}
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://kikobeats.com",
"data.avatar.selector": "#avatar",
"data.avatar.type": "image",
"data.avatar.attr": "src"
}
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://kikobeats.com",
data.avatar.selector: "#avatar",
data.avatar.type: "image",
data.avatar.attr: "src"
}
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://kikobeats.com",
"data.avatar.selector" => "#avatar",
"data.avatar.type" => "image",
"data.avatar.attr" => "src"
];
$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://kikobeats.com")
q.Set("data.avatar.selector", "#avatar")
q.Set("data.avatar.type", "image")
q.Set("data.avatar.attr", "src")
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://kikobeats.com', {
data: {
avatar: {
selector: "#avatar",
type: "image",
attr: "src"
}
}
})Response structure
data payload in the response:{
"data": {
"avatar": {
"url": "https://d33wubrfki0l68.cloudfront.net/ad0e96f5e30e3c65b7ff31e5a637fea070356f0b/eaa58/images/avatar.jpg",
"width": 500,
"height": 500,
"type": "jpg",
"size": 53310,
"size_pretty": "53.3 kB"
}
},
"status": "success"
}Rule properties
| Property | Type | Description |
|---|---|---|
| selector | string | CSS selector to target the element |
| selectorAll | string | CSS selector to target multiple elements |
| attr | string | HTML attribute to extract (e.g., href, src) |
| type | string | Data type for validation (string, number, date, image, url, etc.) |
| evaluate | function | JavaScript function to transform the extracted value |
Extracting multiple fields
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://news.ycombinator.com' URL with 'data' API parameter:
CLI Microlink API example
microlink https://news.ycombinator.com&data.headline.selector='.titleline > a'&data.headline.attr=text&data.link.selector='.titleline > a'&data.link.attr=href&data.link.type=url&data.score.selector=.score&data.score.attr=textcURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://news.ycombinator.com" \
-d "data.headline.selector=.titleline%20%3E%20a" \
-d "data.headline.attr=text" \
-d "data.link.selector=.titleline%20%3E%20a" \
-d "data.link.attr=href" \
-d "data.link.type=url" \
-d "data.score.selector=.score" \
-d "data.score.attr=text"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://news.ycombinator.com', {
data: {
headline: {
selector: ".titleline > a",
attr: "text"
},
link: {
selector: ".titleline > a",
attr: "href",
type: "url"
},
score: {
selector: ".score",
attr: "text"
}
}
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://news.ycombinator.com",
"data.headline.selector": ".titleline > a",
"data.headline.attr": "text",
"data.link.selector": ".titleline > a",
"data.link.attr": "href",
"data.link.type": "url",
"data.score.selector": ".score",
"data.score.attr": "text"
}
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://news.ycombinator.com",
data.headline.selector: ".titleline > a",
data.headline.attr: "text",
data.link.selector: ".titleline > a",
data.link.attr: "href",
data.link.type: "url",
data.score.selector: ".score",
data.score.attr: "text"
}
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://news.ycombinator.com",
"data.headline.selector" => ".titleline > a",
"data.headline.attr" => "text",
"data.link.selector" => ".titleline > a",
"data.link.attr" => "href",
"data.link.type" => "url",
"data.score.selector" => ".score",
"data.score.attr" => "text"
];
$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://news.ycombinator.com")
q.Set("data.headline.selector", ".titleline > a")
q.Set("data.headline.attr", "text")
q.Set("data.link.selector", ".titleline > a")
q.Set("data.link.attr", "href")
q.Set("data.link.type", "url")
q.Set("data.score.selector", ".score")
q.Set("data.score.attr", "text")
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://news.ycombinator.com', {
data: {
headline: {
selector: ".titleline > a",
attr: "text"
},
link: {
selector: ".titleline > a",
attr: "href",
type: "url"
},
score: {
selector: ".score",
attr: "text"
}
}
})Extracting collections
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://news.ycombinator.com' URL with 'data' API parameter:
CLI Microlink API example
microlink https://news.ycombinator.com&data.stories.selectorAll='.titleline > a'&data.stories.attr=textcURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://news.ycombinator.com" \
-d "data.stories.selectorAll=.titleline%20%3E%20a" \
-d "data.stories.attr=text"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://news.ycombinator.com', {
data: {
stories: {
selectorAll: ".titleline > a",
attr: "text"
}
}
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://news.ycombinator.com",
"data.stories.selectorAll": ".titleline > a",
"data.stories.attr": "text"
}
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://news.ycombinator.com",
data.stories.selectorAll: ".titleline > a",
data.stories.attr: "text"
}
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://news.ycombinator.com",
"data.stories.selectorAll" => ".titleline > a",
"data.stories.attr" => "text"
];
$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://news.ycombinator.com")
q.Set("data.stories.selectorAll", ".titleline > a")
q.Set("data.stories.attr", "text")
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://news.ycombinator.com', {
data: {
stories: {
selectorAll: ".titleline > a",
attr: "text"
}
}
})Nested data extraction
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://github.com/microlinkhq' URL with 'data' API parameter:
CLI Microlink API example
microlink https://github.com/microlinkhq&data.repos.selectorAll=.repo&data.repos.data.name.selector=a&data.repos.data.name.attr=text&data.repos.data.description.selector=p&data.repos.data.description.attr=textcURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://github.com/microlinkhq" \
-d "data.repos.selectorAll=.repo" \
-d "data.repos.data.name.selector=a" \
-d "data.repos.data.name.attr=text" \
-d "data.repos.data.description.selector=p" \
-d "data.repos.data.description.attr=text"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://github.com/microlinkhq', {
data: {
repos: {
selectorAll: ".repo",
data: {
name: {
selector: "a",
attr: "text"
},
description: {
selector: "p",
attr: "text"
}
}
}
}
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://github.com/microlinkhq",
"data.repos.selectorAll": ".repo",
"data.repos.data.name.selector": "a",
"data.repos.data.name.attr": "text",
"data.repos.data.description.selector": "p",
"data.repos.data.description.attr": "text"
}
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/microlinkhq",
data.repos.selectorAll: ".repo",
data.repos.data.name.selector: "a",
data.repos.data.name.attr: "text",
data.repos.data.description.selector: "p",
data.repos.data.description.attr: "text"
}
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://github.com/microlinkhq",
"data.repos.selectorAll" => ".repo",
"data.repos.data.name.selector" => "a",
"data.repos.data.name.attr" => "text",
"data.repos.data.description.selector" => "p",
"data.repos.data.description.attr" => "text"
];
$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/microlinkhq")
q.Set("data.repos.selectorAll", ".repo")
q.Set("data.repos.data.name.selector", "a")
q.Set("data.repos.data.name.attr", "text")
q.Set("data.repos.data.description.selector", "p")
q.Set("data.repos.data.description.attr", "text")
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://github.com/microlinkhq', {
data: {
repos: {
selectorAll: ".repo",
data: {
name: {
selector: "a",
attr: "text"
},
description: {
selector: "p",
attr: "text"
}
}
}
}
})Fallback values
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' API parameter:
CLI Microlink API example
microlink https://example.com&data.title='[object Object],[object Object],[object Object]'cURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://example.com" \
-d "data.title=%5Bobject%20Object%5D%2C%5Bobject%20Object%5D%2C%5Bobject%20Object%5D"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://example.com', {
data: {
title: [
{
selector: 'meta[property="og:title"]',
attr: "content"
},
{
selector: "title",
attr: "text"
},
{
selector: "h1",
attr: "text"
}
]
}
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://example.com",
"data.title": "[object Object],[object Object],[object Object]"
}
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: "[object Object],[object Object],[object Object]"
}
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" => "[object Object],[object Object],[object Object]"
];
$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", "[object Object],[object Object],[object Object]")
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: 'meta[property="og:title"]',
attr: "content"
},
{
selector: "title",
attr: "text"
},
{
selector: "h1",
attr: "text"
}
]
}
})