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.
Using an AI agent? Connect Ful.io to Claude, Cursor, or any MCP client without writing API calls, see the MCP Server documentation.
Authentication
Authenticate every request with your API key. You can send it either as a request header (recommended) or as a query parameter. Keep your key secret, anyone with it can consume your credits.
Recommended: x-api-key header
curl "https://api.ful.io/api/domain-search?domain=ful.io" \
-H "x-api-key: YOUR_API_KEY"Simplest: api_key query parameter
curl "https://api.ful.io/api/domain-search?domain=ful.io&api_key=YOUR_API_KEY"The query parameter works, but is less secure since keys in URLs can be exposed in server logs and browser history. Prefer the header for production. An Authorization: Bearer YOUR_API_KEY header is also supported as an alternative to x-api-key.
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?domain=ful.io" \
-H "x-api-key: YOUR_API_KEY"Response fields
| Field | Type | Description |
|---|---|---|
| domain_name | string | The normalized domain that was analyzed. |
| title | string | The website's page title. |
| description | string | The website's meta description. |
| social_links | array | Social profiles found on the site. Each entry has a platform and url. The same platform may appear more than once. |
| social_links[].platform | string | Social platform name, for example "linkedin" or "twitter". |
| social_links[].url | string | URL of the social profile. |
| date_established | string | Approximate date the domain was first established (YYYY-MM-DD). |
| 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": "ful.io",
"title": "Find out what websites are built with - Ful.io",
"description": "Website technology checker and web technology lookup. Find out what CMS, programming languages, frameworks a website is using and much more.",
"social_links": [
{ "platform": "linkedin", "url": "linkedin.com/company/ful-io" },
{ "platform": "twitter", "url": "twitter.com/TechProfilerFul" },
{ "platform": "instagram", "url": "instagram.com/TechProfilerFul" },
{ "platform": "youtube", "url": "youtube.com/@ful-io" }
],
"date_established": "2025-12-16",
"technologies": [
{
"category_slug": "JavaScript-Frameworks",
"category_name": "JavaScript Frameworks",
"technologies": [
{
"name": "React",
"description": "React is a front-end JavaScript library for building user interfaces.",
"icon": "React.png",
"website": "https://reactjs.org",
"technology_slug": "React"
}
]
},
{
"category_slug": "Payment-Processors",
"category_name": "Payment Processors",
"technologies": [
{
"name": "Stripe",
"description": "Stripe is a platform that specializes in financial infrastructure for businesses.",
"icon": "Stripe.svg",
"website": "http://stripe.com",
"technology_slug": "Stripe"
}
]
}
// ... additional categories
]
}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" \
-H "x-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. |