Backlink Data API | Cheap Backlink API for SEO Tools - VebAPI
GET Version 2.0 10 Credits

Backlink API v2

Backlink Data API - Backlink API with Fast & Accurate Link Data

Credit Warning Notice The API charges 10 credits for every 100 requested backlink results. Credit usage is rounded up to the next group of 100.

Ready to query this endpoint?

Sign up to get a free API key instantly with free trial credits. No credit card required.

Request Details

GET /backlinks/live
Parameter Type Requirement Description
target string Required Domain, subdomain, or exact URL to get backlinks for (e.g. vebapi.com).
limit string Required Max number of backlinks to return. Range 1โ€“10000. Billing: 10 credits per 100 (so 250 โ†’ 30 credits).
offset string Required Number of results to skip โ€” use with limit for pagination.
backlinks_status_type string Required Which links to include: live, new, lost , all.
include_subdomains string Required Count links pointing to subdomains of the target (e.g. blog.vebapi.com).
exclude_internal_backlinks string Required Drop links from the target's own domain/subdomains, keeping only external ones.
include_indirect_links string Required Include links that reach the target through redirects or canonicals (shown with link_type: redirect).

Backlink Data API Documentation

The VebAPI Backlink Data API allows developers, SEO platforms, agencies, marketers, and website owners to retrieve backlink data for a domain, subdomain, or exact webpage URL.

Use this API to analyse live backlinks, recently discovered backlinks, lost backlinks, referring domains, dofollow links, redirect links, anchor text, backlink quality metrics, and other useful SEO data.

API Endpoint

GET https://vebapi.com/api/backlinks/live

The endpoint accepts query parameters and returns backlink information in JSON format.

Authentication

Every request must include your VebAPI API key in the X-API-KEY request header.

X-API-KEY: YOUR_API_KEY

Replace YOUR_API_KEY with the API key available in your VebAPI account.

Required Headers

Header Required Description
X-API-KEY Yes Your VebAPI API authentication key.
Content-Type Recommended Use application/json.

Request Parameters

Parameter Type Default Required Description
target string None Yes The domain, subdomain, or exact URL for which backlink data should be returned. Examples: vebapi.com, blog.vebapi.com, or https://vebapi.com/backlink-api. The API returns HTTP status code 422 when this parameter is missing.
limit integer 100 No The maximum number of backlink records to return. The accepted range is 1 to 1000. This parameter can be used together with offset for pagination.
offset integer 0 No The number of backlink records to skip before returning results. Use this parameter with limit to paginate through large backlink result sets.
backlinks_status_type string live No Controls which backlink status should be returned. Supported values are: live, new, lost, and all.
include_subdomains boolean true No When set to true, the response includes backlinks pointing to subdomains of the requested target. For example, a request for vebapi.com may also include links pointing to blog.vebapi.com.
exclude_internal_backlinks boolean false No When set to true, links originating from the target domain or its subdomains are excluded. This keeps only external backlinks in the response.
include_indirect_links boolean true No When set to true, the API includes backlinks that reach the target through redirects or canonical URLs. These links may appear with link_type: redirect.

Backlink Status Types

Value Description
live Returns backlinks that are currently active and were found during the latest available crawl.
new Returns backlinks that were first discovered recently.
lost Returns backlinks that previously existed but are no longer found or accessible.
all Returns backlinks across all available statuses.

Billing and Credit Usage

Backlink API usage is billed according to the requested limit.

The API charges 10 credits for every 100 requested backlink results. Credit usage is rounded up to the next group of 100.

Requested Limit Credits Charged
1 to 100 10 credits
101 to 200 20 credits
201 to 300 30 credits
301 to 400 40 credits
901 to 1000 100 credits

For example, a request with limit=250 is billed as three groups of 100 and therefore costs 30 credits.

Credit charges are based on the requested limit, even when fewer backlink records are available for the target.

Basic cURL Request

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Request With All Parameters

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&limit=100&offset=0&backlinks_status_type=live&include_subdomains=true&exclude_internal_backlinks=true&include_indirect_links=true" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Example JSON Response

{
    "engine": "Vebapi v8",
    "node": "master",
    "provider": "vebapi.com",
    "request": {
        "target": "vebapi.com",
        "mode": "as_is",
        "backlinks_status_type": "live",
        "limit": 100,
        "offset": 0,
        "include_subdomains": true,
        "exclude_internal_backlinks": true,
        "include_indirect_links": true
    },
    "counts": {
        "backlinks": {
            "total": 203,
            "returned": 100,
            "doFollow": 90,
            "fromHomePage": 0,
            "toHomePage": 78,
            "text": 97,
            "image": 0,
            "redirect": 3,
            "new": 23,
            "lost": 0,
            "broken": 0
        },
        "domains": {
            "total": 15,
            "doFollow": 7,
            "fromHomePage": 0,
            "toHomePage": 11
        }
    },
    "backlinks": [
        {
            "url_from": "https://www.producthunt.com/r/A7HDPGWNVC7ZQ5?utm_campaign=producthunt-api&utm_medium=api-v2&utm_source=Application%3A+PH+Deck+%28ID%3A+112811%29",
            "url_to": "https://vebapi.com/",
            "domain_from": "www.producthunt.com",
            "domain_to": "vebapi.com",
            "title": "",
            "anchor": "",
            "alt": "",
            "nofollow": false,
            "image": false,
            "image_source": "",
            "link_type": "redirect",
            "inlink_rank": 23,
            "domain_inlink_rank": 89,
            "spam_score": 0,
            "country": "US",
            "tld_from": "com",
            "is_new": false,
            "is_lost": false,
            "is_broken": false,
            "links_count": 1,
            "first_seen": "2025-09-17",
            "last_visited": "2025-10-18"
        }
    ]
}

Top-Level Response Fields

Field Type Description
engine string The VebAPI engine version that processed the request.
node string The processing node that handled the API request.
provider string The API data provider.
request object Contains the normalised request parameters used to process the request.
counts object Contains aggregated backlink and referring-domain counts.
backlinks array An array containing the individual backlink records.

Request Object Fields

Field Type Description
target string The domain, subdomain, or URL being analysed.
mode string The target matching mode used by the backlink engine. A value of as_is means the supplied target was processed in its provided form.
backlinks_status_type string The requested backlink status filter.
limit integer The maximum number of backlink records requested.
offset integer The number of records skipped before returning results.
include_subdomains boolean Indicates whether backlinks pointing to target subdomains were included.
exclude_internal_backlinks boolean Indicates whether backlinks from the target's own domain and subdomains were excluded.
include_indirect_links boolean Indicates whether redirect and canonical-based indirect links were included.

Backlink Count Fields

The counts.backlinks object contains aggregated information about the backlinks matching the request.

Field Type Description
total integer The total number of backlinks found for the target that match the selected filters.
returned integer The number of backlink records included in the current response.
doFollow integer The number of backlinks that do not contain a nofollow directive.
fromHomePage integer The number of backlinks originating from a referring website's homepage.
toHomePage integer The number of backlinks pointing to the target website's homepage.
text integer The number of text-based backlinks.
image integer The number of image-based backlinks.
redirect integer The number of indirect backlinks reaching the target through redirects.
new integer The number of backlinks marked as recently discovered.
lost integer The number of backlinks that are no longer found.
broken integer The number of backlinks marked as broken or inaccessible.

Referring Domain Count Fields

The counts.domains object contains aggregated data about referring domains.

Field Type Description
total integer The total number of unique referring domains.
doFollow integer The number of unique referring domains providing at least one dofollow backlink.
fromHomePage integer The number of referring domains linking from their homepage.
toHomePage integer The number of referring domains linking to the target website's homepage.

Backlink Record Fields

Each object inside the backlinks array represents an individual backlink.

Field Type Description
url_from string The full URL of the webpage containing or originating the backlink.
url_to string The destination URL on the target website.
domain_from string The referring domain from which the backlink originates.
domain_to string The destination domain receiving the backlink.
title string The title of the referring webpage, when available.
anchor string The visible anchor text used in the backlink.
alt string The alternative text associated with an image backlink, when available.
nofollow boolean Returns true when the backlink is marked as nofollow. Returns false for a dofollow link.
image boolean Indicates whether the backlink is attached to an image.
image_source string The image source URL when the backlink is an image link.
link_type string The backlink type. Depending on the link, values may include text, image, or redirect.
inlink_rank integer A page-level link authority or strength metric for the referring webpage.
domain_inlink_rank integer A domain-level link authority or strength metric for the referring domain.
spam_score integer An estimated spam-risk score for the referring page or domain. Lower values generally indicate lower detected spam risk.
country string The detected two-letter country code associated with the referring website or server.
tld_from string The top-level domain of the referring domain, such as com, org, or co.uk.
is_new boolean Indicates whether the backlink has been classified as newly discovered.
is_lost boolean Indicates whether the backlink has been classified as lost.
is_broken boolean Indicates whether the backlink or its destination is considered broken.
links_count integer The number of matching links found from the referring page to the target.
first_seen string The date on which the backlink was first discovered. The date is returned in YYYY-MM-DD format.
last_visited string The most recent date on which the backlink source was visited or checked. The date is returned in YYYY-MM-DD format.

Pagination

Use the limit and offset parameters to retrieve backlinks across multiple requests.

First Page

GET https://vebapi.com/api/backlinks/live?target=vebapi.com&limit=100&offset=0

Second Page

GET https://vebapi.com/api/backlinks/live?target=vebapi.com&limit=100&offset=100

Third Page

GET https://vebapi.com/api/backlinks/live?target=vebapi.com&limit=100&offset=200

Continue increasing the offset until the returned backlink array is empty or until the requested records cover the value shown in counts.backlinks.total.

Retrieve New Backlinks

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&backlinks_status_type=new&limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Retrieve Lost Backlinks

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&backlinks_status_type=lost&limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Retrieve All Backlink Statuses

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&backlinks_status_type=all&limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Retrieve Backlinks for an Exact URL

curl -X GET "https://vebapi.com/api/backlinks/live?target=https%3A%2F%2Fvebapi.com%2Fbacklink-api&limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

When sending an exact URL as the target, URL-encode the value before adding it to the query string.

Retrieve External Backlinks Only

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&exclude_internal_backlinks=true&limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Exclude Subdomain Backlinks

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&include_subdomains=false&limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Exclude Redirect and Indirect Links

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&include_indirect_links=false&limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

JavaScript Example

const params = new URLSearchParams({
    target: "vebapi.com",
    limit: "100",
    offset: "0",
    backlinks_status_type: "live",
    include_subdomains: "true",
    exclude_internal_backlinks: "true",
    include_indirect_links: "true"
});

const response = await fetch(
    `https://vebapi.com/api/backlinks/live?${params.toString()}`,
    {
        method: "GET",
        headers: {
            "X-API-KEY": "YOUR_API_KEY",
            "Content-Type": "application/json"
        }
    }
);

if (!response.ok) {
    const errorData = await response.json();
    throw new Error(
        errorData.message || `Request failed with status ${response.status}`
    );
}

const data = await response.json();

console.log("Total backlinks:", data.counts.backlinks.total);
console.log("Returned backlinks:", data.counts.backlinks.returned);
console.log("Backlinks:", data.backlinks);

PHP Example

<?php

$apiKey = 'YOUR_API_KEY';

$query = http_build_query([
    'target' => 'vebapi.com',
    'limit' => 100,
    'offset' => 0,
    'backlinks_status_type' => 'live',
    'include_subdomains' => 'true',
    'exclude_internal_backlinks' => 'true',
    'include_indirect_links' => 'true'
]);

$url = 'https://vebapi.com/api/backlinks/live?' . $query;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => [
        'X-API-KEY: ' . $apiKey,
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if (curl_errno($curl)) {
    throw new RuntimeException(curl_error($curl));
}

curl_close($curl);

$data = json_decode($response, true);

if ($statusCode < 200 || $statusCode >= 300) {
    $message = $data['message'] ?? 'The API request failed.';
    throw new RuntimeException($message);
}

echo 'Total backlinks: ' . $data['counts']['backlinks']['total'];
echo PHP_EOL;
echo 'Returned backlinks: ' . $data['counts']['backlinks']['returned'];

Laravel Example

use Illuminate\Support\Facades\Http;

$response = Http::withHeaders([
    'X-API-KEY' => 'YOUR_API_KEY',
    'Content-Type' => 'application/json',
])->get('https://vebapi.com/api/backlinks/live', [
    'target' => 'vebapi.com',
    'limit' => 100,
    'offset' => 0,
    'backlinks_status_type' => 'live',
    'include_subdomains' => true,
    'exclude_internal_backlinks' => true,
    'include_indirect_links' => true,
]);

if ($response->failed()) {
    throw new RuntimeException(
        $response->json('message', 'The backlink API request failed.')
    );
}

$data = $response->json();

$totalBacklinks = $data['counts']['backlinks']['total'];
$returnedBacklinks = $data['counts']['backlinks']['returned'];
$backlinks = $data['backlinks'];

Python Example

import requests

url = "https://vebapi.com/api/backlinks/live"

headers = {
    "X-API-KEY": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

params = {
    "target": "vebapi.com",
    "limit": 100,
    "offset": 0,
    "backlinks_status_type": "live",
    "include_subdomains": "true",
    "exclude_internal_backlinks": "true",
    "include_indirect_links": "true"
}

response = requests.get(
    url,
    headers=headers,
    params=params,
    timeout=60
)

response.raise_for_status()

data = response.json()

print("Total backlinks:", data["counts"]["backlinks"]["total"])
print("Returned backlinks:", data["counts"]["backlinks"]["returned"])

for backlink in data["backlinks"]:
    print(backlink["url_from"], "->", backlink["url_to"])

Node.js Example

const params = new URLSearchParams({
    target: "vebapi.com",
    limit: "100",
    offset: "0",
    backlinks_status_type: "live",
    include_subdomains: "true",
    exclude_internal_backlinks: "true",
    include_indirect_links: "true"
});

async function getBacklinks() {
    const response = await fetch(
        `https://vebapi.com/api/backlinks/live?${params}`,
        {
            headers: {
                "X-API-KEY": "YOUR_API_KEY",
                "Content-Type": "application/json"
            }
        }
    );

    const data = await response.json();

    if (!response.ok) {
        throw new Error(
            data.message || `Request failed with status ${response.status}`
        );
    }

    return data;
}

getBacklinks()
    .then((data) => {
        console.log(data.counts);
        console.log(data.backlinks);
    })
    .catch((error) => {
        console.error(error.message);
    });

Error Responses

The API uses standard HTTP response codes to indicate whether a request was successful.

Status Code Meaning Possible Cause
200 Success The request was processed successfully.
401 Unauthorised The API key is missing, invalid, expired, or inactive.
403 Forbidden The account or API key does not have permission to use the endpoint.
422 Validation Error A required parameter is missing or one of the provided parameter values is invalid.
429 Too Many Requests The request rate or account usage limit has been exceeded.
500 Internal Server Error An unexpected error occurred while processing the request.
503 Service Unavailable The backlink service is temporarily unavailable.

Missing Target Error

When the required target parameter is missing, the API returns HTTP status code 422.

Example Invalid Request

curl -X GET "https://vebapi.com/api/backlinks/live?limit=100" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Example Error Response

{
    "message": "The target field is required.",
    "errors": {
        "target": [
            "The target field is required."
        ]
    }
}

Invalid Limit Error

The limit parameter must be an integer between 1 and 1000.

Example Invalid Request

curl -X GET "https://vebapi.com/api/backlinks/live?target=vebapi.com&limit=1500" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"

Example Error Response

{
    "message": "The limit must not be greater than 1000.",
    "errors": {
        "limit": [
            "The limit must not be greater than 1000."
        ]
    }
}

Important Notes

  • Backlink data depends on the most recently available crawl and indexing information.
  • A backlink may be marked as live even when the referring page has changed after its most recent recorded visit.
  • The first_seen value indicates when the backlink was first discovered by the backlink engine, not necessarily when it was originally created.
  • The last_visited value indicates the latest recorded visit to the backlink source.
  • Empty values such as title, anchor, alt, or image_source mean that the information was unavailable or not applicable.
  • Redirect links may not contain conventional anchor text because they reach the target through an HTTP redirect or another indirect path.
  • Boolean query parameters should be sent as true or false.
  • Exact URLs should be URL-encoded before being included in the request query string.
  • The number of records returned may be lower than the requested limit when fewer matching backlinks are available.

Common Use Cases

  • Build a backlink checker tool.
  • Monitor newly discovered backlinks.
  • Identify recently lost backlinks.
  • Analyse referring domains.
  • Measure dofollow and nofollow backlink distribution.
  • Extract backlink anchor text.
  • Find image and redirect backlinks.
  • Monitor backlink growth over time.
  • Build SEO reporting dashboards.
  • Compare competitor backlink profiles.
  • Detect potentially low-quality or spam-related links.
  • Integrate backlink intelligence into an SEO SaaS platform.

Recommended Integration Practices

  • Store your API key securely and never expose it in public client-side code.
  • Send API requests from your backend server whenever possible.
  • Use pagination for targets with large backlink profiles.
  • Cache backlink responses when real-time rechecking is unnecessary.
  • Handle HTTP status codes and API validation errors in your application.
  • Set an appropriate HTTP timeout for backlink requests.
  • Avoid retrying failed requests immediately without a delay, particularly after receiving HTTP status code 429 or 503.
  • Monitor credit usage when requesting high limits or processing many domains.

Frequently Asked Questions

Can I retrieve backlinks for a specific webpage?

Yes. Pass the complete webpage URL in the target parameter. The URL should be URL-encoded when included in the query string.

Can I retrieve backlinks for subdomains?

Yes. You can provide a subdomain such as blog.vebapi.com as the target. You can also use include_subdomains=true when analysing a root domain.

How do I retrieve only external backlinks?

Set exclude_internal_backlinks=true. This removes links originating from the target domain and its subdomains.

How do I retrieve lost backlinks?

Set backlinks_status_type=lost.

How do I retrieve newly discovered backlinks?

Set backlinks_status_type=new.

How can I detect dofollow backlinks?

A backlink is considered dofollow when its nofollow field is false.

How can I detect image backlinks?

Check whether the image field is true. The related image URL may be available in image_source.

How can I detect redirect backlinks?

Redirect backlinks normally contain link_type: redirect. Make sure include_indirect_links is set to true.

Why is the returned count lower than the requested limit?

The target may have fewer backlinks matching the selected filters than the requested limit. The actual number returned is available in counts.backlinks.returned.

Does the API return every backlink in a single request?

The maximum request limit is 1000. Use limit and offset pagination when the target has more matching backlinks.

How many credits does a request use?

The API charges 10 credits for every 100 requested backlink results, rounded up to the next group of 100. For example, limit=250 costs 30 credits.

Request Example (cURL)
Expected JSON Response

Flexible Developer Pricing

Select the plan that fits your execution volume. Standard plans come with full access to all endpoints, high concurrency limits, and active support.

๐Ÿ”ฅ Special Offer Pricing

Simple, Transparent Pricing

Choose a plan now, scale anytime. One API key for all endpoints.

Monthly billing Yearly billing 2 months free
Loading pricingโ€ฆ
Enterprise & High Volume

Need more than 1 million requests a month?

Get volume-based pricing, custom rate limits, dedicated support, and tailored SLAs. Our team will build a plan around your scale.

  • โœ“ Custom credit volume
  • โœ“ Higher rate limits
  • โœ“ Priority support & SLA
  • โœ“ Flexible billing
Contact Support

Typical reply within 24 hours