# Endpoint

Microlink API is exposed from two endpoints:

- **free** ([](https://api.microlink.io/)


  api.microlink.io



  ): The endpoint to be used for unauthenticated requests. It has daily rate limit.
- **pro** ([](https://pro.microlink.io/)


  pro.microlink.io



  ): The endpoint to be used for authenticated requests. It needs a previously register API key.

All you need to do for accessing any of these endpoints it to hit them using HTTP GET method, nothing else.

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 'headers' API parameter:

### CLI Microlink API example

```
microlink https://github.com/microlinkhq&headers.userAgent=googlebot
```

### cURL Microlink API example

```
curl -G "https://api.microlink.io" \
  -d "url=https://github.com/microlinkhq" \
  -d "headers.userAgent=googlebot"
```

### JavaScript Microlink API example

```
import mql from '@microlink/mql'

const { data } = await mql('https://github.com/microlinkhq', {
  headers: {
    userAgent: "googlebot"
  }
})
```

### Python Microlink API example

```
import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://github.com/microlinkhq",
    "headers.userAgent": "googlebot"
}

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",
  headers.userAgent: "googlebot"
}

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.body
```

### PHP Microlink API example

```
<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://github.com/microlinkhq",
    "headers.userAgent" => "googlebot"
];

$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("headers.userAgent", "googlebot")
    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', {
      headers: {
        userAgent: "googlebot"
      }
    })

Click to run the code and see the API response

Any additional API Parameter needs to be provided as query parameter.

The endpoint accepts multiple query parameters. It doesn't matter if they are camel or snake case, both styles are supported.

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 'headers' API parameter:

### CLI Microlink API example

```
microlink https://github.com/microlinkhq&headers.user_agent=googlebot
```

### cURL Microlink API example

```
curl -G "https://api.microlink.io" \
  -d "url=https://github.com/microlinkhq" \
  -d "headers.user_agent=googlebot"
```

### JavaScript Microlink API example

```
import mql from '@microlink/mql'

const { data } = await mql('https://github.com/microlinkhq', {
  headers: {
    user_agent: "googlebot"
  }
})
```

### Python Microlink API example

```
import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://github.com/microlinkhq",
    "headers.user_agent": "googlebot"
}

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",
  headers.user_agent: "googlebot"
}

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.body
```

### PHP Microlink API example

```
<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://github.com/microlinkhq",
    "headers.user_agent" => "googlebot"
];

$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("headers.user_agent", "googlebot")
    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', {
      headers: {
        user_agent: "googlebot"
      }
    })

Click to run the code and see the API response

Provide the same API parameter but using snake_case has the same effect.

If you are using [Microlink Query Language](https://microlink.io/docs/mql/getting-started/overview) (MQL), the endpoint is automatically determined in case you provide an API Key.

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 'headers' API parameter:

### CLI Microlink API example

```
microlink https://github.com/microlinkhq&headers.apiKey=YOUR_API_TOKEN&headers.userAgent=googlebot
```

### cURL Microlink API example

```
curl -G "https://api.microlink.io" \
  -d "url=https://github.com/microlinkhq" \
  -d "headers.apiKey=YOUR_API_TOKEN" \
  -d "headers.userAgent=googlebot"
```

### JavaScript Microlink API example

```
import mql from '@microlink/mql'

const { data } = await mql('https://github.com/microlinkhq', {
  headers: {
    apiKey: "YOUR_API_TOKEN",
    userAgent: "googlebot"
  }
})
```

### Python Microlink API example

```
import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://github.com/microlinkhq",
    "headers.apiKey": "YOUR_API_TOKEN",
    "headers.userAgent": "googlebot"
}

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",
  headers.apiKey: "YOUR_API_TOKEN",
  headers.userAgent: "googlebot"
}

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.body
```

### PHP Microlink API example

```
<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://github.com/microlinkhq",
    "headers.apiKey" => "YOUR_API_TOKEN",
    "headers.userAgent" => "googlebot"
];

$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("headers.apiKey", "YOUR_API_TOKEN")
    q.Set("headers.userAgent", "googlebot")
    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', {
      headers: {
        apiKey: "YOUR_API_TOKEN",
        userAgent: "googlebot"
      }
    })

Click to run the code and see the API response