Developer Documentation
API Reference
Integrate Ful.io's web technology intelligence directly into your product. Look up the technology stack of any website and check your subscription usage through a simple, authenticated REST API.
https://api.ful.ioIntroduction
The Ful.io API lets you programmatically access our web technology intelligence. Every request is a standard HTTPS call that returns JSON. There are no SDKs to install, you can call the API from any language or tool that can make an HTTP request.
All endpoints are served from https://api.ful.io and require an API key. To get started, grab your API key from your account security page, or visit pricing to choose a plan with API access.
Authentication
Authenticate every request by passing your API key as the api_key query parameter. Keep your key secret, anyone with it can consume your credits.
curl "https://api.ful.io/api/domain-search?api_key=YOUR_API_KEY&domain=example.com"If the api_key is missing you receive a 400, and if it is invalid or inactive you receive a 401.
Credits & Usage
Each successful API call consumes one API credit from your plan's API allowance. When your remaining API credits reach zero, requests return a 400 with an Insufficient credits message until your allowance renews or you upgrade.
You can check your remaining API credits at any time using the Subscription Details endpoint.
Errors
The API uses standard HTTP status codes. Error responses always include an error field describing what went wrong.
{
"error": "Invalid or inactive API key"
}| Status | Meaning |
|---|---|
| 200 | Success. The request completed and the response body contains your data. |
| 400 | Bad request. A required parameter is missing or invalid, or you have insufficient credits. |
| 401 | Unauthorized. The API key is missing, invalid, or inactive. |
| 404 | Not found. The requested domain or resource could not be found. |
| 429 | Too many requests. You are being rate limited, slow down and retry. |
| 500 | Server error. Ful.io could not complete the request, retry shortly. |
| 503 | Service unavailable. The service is temporarily unavailable, retry shortly. |
Technology Lookup
Returns the full technology stack detected for a website, grouped by category (for example CMS, eCommerce, analytics, hosting, payment processors, and more).
https://api.ful.io/api/domain-searchQuery parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key. |
| domain | string | Yes | The website domain to analyze, for example example.com. The value is automatically normalized, so https:// prefixes and paths are stripped. |
Example request
curl "https://api.ful.io/api/domain-search?api_key=YOUR_API_KEY&domain=youtube.com"Response fields
| Field | Type | Description |
|---|---|---|
| domain_name | string | The normalized domain that was analyzed. |
| technologies | array | A list of category groups detected on the domain. |
| technologies[].category_slug | string | URL-friendly identifier for the category. |
| technologies[].category_name | string | Human-readable category name, for example "Payment Processors". |
| technologies[].technologies | array | The technologies detected within this category. |
| technologies[].technologies[].name | string | Technology name, for example "Paystack". |
| technologies[].technologies[].description | string | Short description of the technology. |
| technologies[].technologies[].icon | string | Icon filename for the technology. |
| technologies[].technologies[].website | string | Official website URL of the technology. |
| technologies[].technologies[].technology_slug | string | URL-friendly identifier for the technology. |
Example response
{
"domain_name": "youtube.com",
"technologies": [
{
"category_slug": "Payment-Processors",
"category_name": "Payment Processors",
"technologies": [
{
"name": "Paystack",
"description": "Online and offline payments for Africa",
"icon": "Paystack.png",
"website": "https://paystack.com",
"technology_slug": "paystack"
}
]
},
{
"category_slug": "CDN",
"category_name": "CDN",
"technologies": [
{
"name": "Google Cloud CDN",
"description": "Content delivery network by Google.",
"icon": "GoogleCloud.png",
"website": "https://cloud.google.com/cdn",
"technology_slug": "google-cloud-cdn"
}
]
}
]
}Errors
| Status | error | Cause |
|---|---|---|
| 400 | API key is required | The api_key parameter was not provided. |
| 400 | Domain parameter is required. | The domain parameter was not provided. |
| 400 | Invalid domain format | The domain could not be parsed into a valid hostname. |
| 400 | Insufficient credits | Your plan has no remaining API credits. |
| 401 | Invalid or inactive API key | The api_key does not match an active membership. |
| 500 | Failed to contact external API | An upstream error occurred, retry shortly. |
Subscription Details
Returns your current membership, its limits, and your remaining credits. Useful for monitoring API usage before making calls.
https://api.ful.io/user/api/subscription-detailsQuery parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key. |
Example request
curl "https://api.ful.io/user/api/subscription-details?api_key=YOUR_API_KEY"Response fields
The response is wrapped in a user_membership object.
| Field | Type | Description |
|---|---|---|
| id | integer | Identifier of the membership record. |
| user | integer | Identifier of the user that owns the membership. |
| membership | object | The plan definition and its limits (see below). |
| membership.id | integer | Plan identifier. |
| membership.name | string | Plan name, for example "Pro". |
| membership.credit_limit | integer | Total credit limit for the plan. |
| membership.logins | integer | Number of concurrent logins allowed. |
| membership.tech_lookup_credits_limit | integer | Technology lookup credit limit. |
| membership.api_credits_limit | integer | API call credit limit. |
| membership.technology_reports_credits_limit | integer | Technology report credit limit. |
| membership_id | integer | Convenience copy of the plan id. |
| membership_name | string | Convenience copy of the plan name. |
| start_date | string | ISO 8601 timestamp when the current period started. |
| end_date | string | ISO 8601 timestamp when the current period ends. |
| remaining_credits | integer | Total remaining credits across the plan. |
| tech_lookup_remaining_credits | integer | Remaining technology lookup credits. |
| api_remaining_credits | integer | Remaining API call credits. |
| technology_reports_remaining_credits | integer | Remaining technology report credits. |
| is_active | boolean | Whether the membership is currently active. |
| cancel_at_period_end | boolean | Whether the subscription is set to cancel at the end of the period. |
Example response
{
"user_membership": {
"id": 12,
"user": 34,
"membership": {
"id": 3,
"name": "Pro",
"credit_limit": 10000,
"logins": 5,
"tech_lookup_credits_limit": 5000,
"api_credits_limit": 10000,
"technology_reports_credits_limit": 1000
},
"membership_id": 3,
"membership_name": "Pro",
"start_date": "2026-06-01T00:00:00Z",
"end_date": "2026-07-01T00:00:00Z",
"remaining_credits": 8500,
"tech_lookup_remaining_credits": 4200,
"api_remaining_credits": 9300,
"technology_reports_remaining_credits": 900,
"is_active": true,
"cancel_at_period_end": false
}
}Errors
| Status | error | Cause |
|---|---|---|
| 400 | API key is required | The api_key parameter was not provided. |
| 401 | Invalid or inactive API key | The api_key does not match a membership. |