NAV
shell ruby python javascript

Introduction

Welcome to the Ful.io API! Use our APIs to quickly identify technology stacks behind websites, discover relevant email addresses, and effortlessly manage your account subscription and credits.

We provide ready-to-use examples in Shell, Python, JavaScript, and Ruby. Check out the code snippets in the panel to your right, and seamlessly switch languages using the tabs above.

You're all set—let's get started with Ful.io!

Authentication

To authorize, use this code:

require "httparty"

response = HTTParty.get(
  "https://api.ful.io/your-endpoint",
  query: { api_key: "<YOUR_API_KEY>" }
)
puts response.body

import requests

resp = requests.get(
    "https://api.ful.io/your-endpoint",
    params={"api_key": "<YOUR_API_KEY>"}
)
print(resp.json())


# Please pass your endpoint correctly.
curl --location \
  "https://api.ful.io/your-endpoint?api_key=<YOUR_API_KEY>"

// Please pass your endpoint correctly.
// using axios
import axios from "axios";

axios.get("https://api.ful.io/your-endpoint", {
  params: { api_key: "<YOUR_API_KEY>" }
})
.then(res => console.log(res.data));

Make sure to replace YOUR_API_KEY with your API key.

Ful.io uses API keys to allow access to the API. You can view your API key at dashboard portal - Security.

Ful.io APIs require your API key as a query parameter in all requests:

?api_key=ThisIsYourAPIKey

Lookups

Technology Lookup

require 'httparty'

tech = HTTParty.get(
  "https://api.ful.io/api/domain-search",
  query: { api_key: "<YOUR_API_KEY>", domain: "example.com" }
)
puts tech.body
import requests

resp = requests.get(
    "https://api.ful.io/api/domain-search",
    params={"api_key": "<YOUR_API_KEY>", "domain": "example.com"}
)
print(resp.json())

curl --location \
  "https://api.ful.io/api/domain-search?api_key=<YOUR_API_KEY>&domain=example.com"

const axios = require('axios');

axios.get('https://api.ful.io/api/domain-search', {
  params: { api_key: '<YOUR_API_KEY>', domain: 'example.com' }
})
.then(res => console.log(res.data));

The above command returns JSON structured like this:

{
  "domain_name": "example.com",
  "technologies": [
    {
      "category_slug": "Mobile",
      "category_name": "Mobile",
      "technologies": [
        {
          "name": "Viewport Meta",
          "description": "This page uses the viewport meta tag which means the content may be optimized for mobile content.",
          "icon": "Viewport Meta.png",
          "website": "https://developers.google.com/speed/docs/insights/ConfigureViewport",
          "technology_slug": "viewport-meta"
        }
      ]
    },
    {
      "category_slug": "Documentation",
      "category_name": "Documentation",
      "technologies": [
        {
          "name": "HTML5 DocType",
          "description": "A DOCTYPE is a required preamble.",
          "icon": "HTML5 DocType.png",
          "website": "https://html.spec.whatwg.org/multipage/syntax.html#the-doctype",
          "technology_slug": "html5-doctype"
        }
      ]
    }
  ]
}

This endpoint retrieves all technologies associated with a website name.

HTTP Request

GET https://api.ful.io/api/domain-search

Query Parameters

Parameter Description
api_key You have to paste the API key which has been assigned to you specifically.
domain Enter the name of the website you want to lookup the technologies for.

Email Lookup

require 'httparty'

email = HTTParty.get(
  "https://api.ful.io/api/email-search-website",
  query: { api_key: "<YOUR_API_KEY>", email: "example.com" }
)
puts email.body
import requests

resp = requests.get(
    "https://api.ful.io/api/email-search-website",
    params={"api_key": "<YOUR_API_KEY>", "email": "example.com"}
)
print(resp.json())

curl --location \
  "https://api.ful.io/api/email-search-website?api_key=<YOUR_API_KEY>&email=example.com"

const axios = require('axios');

axios.get('https://api.ful.io/api/email-search-website', {
  params: { api_key: '<YOUR_API_KEY>', email: 'example.com' }
})
.then(res => console.log(res.data));

The above command returns JSON structured like this:

{
  "domain": "example.com",
  "total unique emails found": 2,
  "total email occurrences": 10,
  "results_found": [
    {
      "Email": "abc@example.com",
      "URLs": [
        "https://ful.io/technology/analytics/moat",
        "https://ful.io/technology/cms/wolf-cms",
        "https://ful.io/technology/cms/solidpixels",
        "https://ful.io/technology/analytics/facebook-pixel"
      ]
    },
    {
      "Email": "xyz@example.com",
      "URLs": [
        "https://ful.io/technology/cms/pyrocms",
        "https://ful.io/technology/cms/flazio",
        "https://ful.io/technology/cms/indexhibit",
        "https://ful.io/technology/tag-managers",
        "https://ful.io/technology/cms/chameleon-system",
        "https://ful.io/technology/widgets/facebook"
      ]
    }
  ]
}

This endpoint retrieves all the emails (along with the source) associated with a website name.

HTTP Request

GET https://api.ful.io/api/email-search-website

URL Parameters

Parameter Description
api_key You have to paste the API key which has been assigned to you specifically.
email Enter the name of the website you want to lookup the emails for.

Memberships & Credits

require 'httparty'

subs = HTTParty.get(
  "https://api.ful.io/user/api/subscription-details",
  query: { api_key: "<YOUR_API_KEY>" }
)
puts subs.body
import requests

resp = requests.get(
    "https://api.ful.io/user/api/subscription-details",
    params={"api_key": "<YOUR_API_KEY>"}
)
print(resp.json())

curl --location \
  "https://api.ful.io/user/api/subscription-details?api_key=<YOUR_API_KEY>"

const axios = require('axios');

axios.get('https://api.ful.io/user/api/subscription-details', {
  params: { api_key: '<YOUR_API_KEY>' }
})
.then(res => console.log(res.data));

The above command returns JSON structured like this:

{
  "user_membership": {
    "id": 8,
    "user": 2,
    "membership": {
      "id": 2,
      "name": "Individual",
      "credit_limit": 0,
      "logins": 2,
      "tech_lookup_credits_limit": 5000,
      "email_lookup_credits_limit": 5000,
      "api_credits_limit": 250,
      "lead_generation_credtis_limit": 5
    },
    "membership_id": 2,
    "membership_name": "Individual",
    "start_date": "2025-04-08T16:30:16.156305Z",
    "end_date": "2025-05-08T16:30:16.155893Z",
    "remaining_credits": 0,
    "tech_lookup_remaining_credits": 4972,
    "email_lookup_remaining_credits": 4977,
    "api_remaining_credits": 240,
    "lead_generation_remaining_credtis": 1,
    "is_active": true
  }
}

This endpoint retrieves all the subscription details of your account including the remaining & used credits.

HTTP Request

GET https://api.ful.io/user/api/subscription-details

URL Parameters

Parameter Description
api_key You have to paste the API key which has been assigned to you specifically.

Errors

Ful.io API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- The API requested is hidden for administrators only.
404 Not Found -- The specified information could not be found.
405 Method Not Allowed -- You tried to access a API with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The response requested has been removed from our servers.
429 Too Many Requests -- You're requesting too many response! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.