Getting Started
Start using the FastBusiness API
FastBusiness API allows developers to search, retrieve, generate, and refresh structured business profile data through simple JSON endpoints.
Overview
FastBusiness API is designed to help applications access enriched business profile information in a structured and developer-friendly format.
What the API provides
- Business profile lookup by ID, search query, and saved profile data.
- Structured JSON responses for use in apps, dashboards, CRMs, and internal tools.
- Async profile generation for businesses that are not already in the database.
- Profile refresh support when newer business information is needed.
- Company data including identifiers, industry, location, key people, competitors, capabilities, and source links.
- Source tracking so users can understand where profile data came from.
Quick Start
Make your first request by sending a GET request to the business search endpoint.
GET /api/businesses/search/?q=UGL%20Limited
curl -X GET "https://fastbusinessapi.com/api/businesses/search/?q=UGL%20Limited" \
-H "X-User-Email: [your@email.com](mailto:your@email.com)"
-H "APIKEY: your_api_key"
-H "Content-Type: application/json" Basic flow
- Create or retrieve your API key from your dashboard.
- Send your user email and API key in the request headers.
- Search first using
GET /api/businesses/search/?q=.... - If a match is found, use the returned business profile object.
- If no match is found, call
POST /api/businesses/generate/. - Use the job ID to check generation progress with
GET /api/businesses/generation-jobs/{job_id}/. - Use the returned JSON response inside your application.
Authentication
FastBusiness API uses API key authentication. Every request must include your user email and API key in the request headers.
X-User-Email: your@email.com
APIKEY: your_api_key
Content-Type: application/json | Header | Required | Description |
|---|---|---|
X-User-Email |
Yes | The email address connected to the FastBusiness account making the request. |
APIKEY |
Yes | Your private API key used to authenticate requests. |
Content-Type |
Yes | Use application/json for JSON requests. |
Base URL
All API requests are made from the base API URL. Combine the base URL with an endpoint path to create a full request URL.
https://fastbusinessapi.com/api
Endpoint example
Combine the base URL with the endpoint path to create a full request URL.
https://fastbusinessapi.com/api/businesses/search/?q=UGL%20Limited
http://127.0.0.1:8000/api or http://localhost:8000/api.
Core API
Business Profile API
The Core API endpoints allow developers to generate structured business profiles, search existing business records, retrieve saved profiles, and understand the JSON response format returned by FastBusiness API.
Generate Business Profile
Generate a structured business profile using a business name. This endpoint is used when a business does not already exist in the system or when your application needs to create a new enriched business profile.
/api/businesses/generate/
What this endpoint does
- Accepts a business name in the request body.
- Optionally accepts a website URL and country to improve matching and enrichment.
- Checks whether a matching business profile already exists.
- Returns an existing business profile if a strong match is found.
- Queues a generation job if a new business profile needs to be created.
| Body Field | Required | Type | Description |
|---|---|---|---|
business_name |
Yes | string | The name of the business you want to generate a profile for. |
website_url |
No | string | The known website URL for the business. This can improve matching and profile accuracy. |
country |
No | string | The country associated with the business. This can help with regional identifiers and source selection. |
curl -X POST "https://fastbusinessapi.com/api/businesses/generate/" \
-H "X-User-Email: your@email.com" \
-H "APIKEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"business_name": "UGL Limited",
"website_url": "https://www.ugllimited.com",
"country": "Australia"
}'
{
"status": "queued",
"job_id": "job_123456",
"message": "Business profile generation has been queued."
}
{
"status": "existing",
"message": "A matching business profile already exists.",
"business": {
"id": 9,
"business_name": "UGL Limited",
"business_type": "private",
"website_url": "https://www.ugllimited.com",
"country": "Australia",
"industry": "Construction and engineering services"
}
}
{
"error": "Missing required field: business_name"
}
Search Businesses
Search for an existing business profile using a business name or search phrase. This endpoint helps developers check whether a business is already stored before generating a new profile.
/api/businesses/search/
| Query Parameter | Required | Type | Description |
|---|---|---|---|
q |
Yes | string | The business name or search phrase to match against saved business profiles. |
curl -X GET "https://fastbusinessapi.com/api/businesses/search/?q=UGL%20Limited" \
-H "X-User-Email: your@email.com" \
-H "APIKEY: your_api_key" \
-H "Content-Type: application/json"
{
"found": true,
"query": "ugl limited",
"result": {
"id": 9,
"business_name": "UGL Limited",
"business_type": "private",
"website_url": "https://www.ugllimited.com",
"linkedin": "https://www.linkedin.com/company/ugl-limited/life/graduates",
"abn": "85009180287",
"acn": "009180287",
"stock_ticker": "",
"exchange": "",
"employee_count": "7,850",
"sector": "Engineering",
"industry": "Construction and engineering services",
"short_description": "UGL Limited is an engineering and services company that provides construction, maintenance, and asset management services.",
"quick_company_capabilities_description": "Engineering construction, maintenance, and asset management services for rail, resources, and infrastructure sectors",
"headquarters": "North Sydney, New South Wales",
"country": "Australia",
"competitors": [
{
"competitor": "John Holland Group Pty Ltd",
"quick_description": "Engineering and construction services for infrastructure, rail, and transport",
"competitive_score": 0.95
},
{
"competitor": "DT Infrastructure",
"quick_description": "Provider of rail infrastructure solutions with expertise in construction and maintenance",
"competitive_score": 0.9
}
],
"key_people": [
{
"name": "Sam Goldsmith",
"position": "Managing Director",
"description": "Appointed Managing Director in January 2026."
}
],
"sources": [
"https://www.ugllimited.com",
"https://www.ugllimited.com/about-ugl/leadership",
"https://johnholland.com.au/"
],
"created_at": "2026-05-31T15:23:07.158997Z",
"updated_at": "2026-05-31T15:23:07.159009Z"
},
"score": 1.4
}
{
"found": false,
"query": "Example Business",
"result": null,
"message": "No matching business profile was found."
}
When to use this endpoint
- Before generating a new profile.
- When checking whether a business already exists in your system.
- When building search bars, dashboards, CRMs, or enrichment tools.
- When avoiding duplicate generation jobs for businesses that already exist.
score field represents how strongly the search query matched
the saved business profile. It is a search match score, not a data confidence score.
Response Format
FastBusiness API returns JSON responses. Depending on the endpoint, responses may include a business profile object, a search result, a queued job response, an existing profile response, a job status response, or an error object.
Standard response types
Your application should check the response status and key fields before using the returned data. Generation and refresh endpoints may return immediately with a queued job instead of a completed business profile.
| Response Type | Used By | Description |
|---|---|---|
| Business profile object | GET /api/businesses/{id}/ |
Returns a saved structured business profile. |
| Search result object | GET /api/businesses/search/ |
Returns whether a matching business profile was found, the matched profile, and a top-level match score. |
| Queued job object | POST /api/businesses/generate/ |
Returns a job ID when profile generation is queued. |
| Existing profile object | POST /api/businesses/generate/ |
Returns an existing business profile when a strong match already exists. |
| Job status object | GET /api/businesses/generation-jobs/{job_id}/ |
Returns the current generation or refresh job status, progress, and completed profile when available. |
| Error object | All endpoints | Returns an error message when the request fails. |
{
"id": 9,
"business_name": "UGL Limited",
"business_type": "private",
"website_url": "https://www.ugllimited.com",
"linkedin": "https://www.linkedin.com/company/ugl-limited/life/graduates",
"abn": "85009180287",
"acn": "009180287",
"stock_ticker": "",
"exchange": "",
"employee_count": "7,850",
"sector": "Engineering",
"industry": "Construction and engineering services",
"short_description": "UGL Limited is an engineering and services company that provides construction, maintenance, and asset management services.",
"quick_company_capabilities_description": "Engineering construction, maintenance, and asset management services for rail, resources, and infrastructure sectors",
"headquarters": "North Sydney, New South Wales",
"country": "Australia",
"competitors": [
{
"competitor": "John Holland Group Pty Ltd",
"quick_description": "Engineering and construction services for infrastructure, rail, and transport",
"competitive_score": 0.95
}
],
"key_people": [
{
"name": "Sam Goldsmith",
"position": "Managing Director",
"description": "Appointed Managing Director in January 2026."
}
],
"sources": [
"https://www.ugllimited.com",
"https://www.ugllimited.com/about-ugl/leadership"
],
"created_at": "2026-05-31T15:23:07.158997Z",
"updated_at": "2026-05-31T15:23:07.159009Z"
}
{
"error": "Please wait before generating another business profile.",
"message": "Profile generation is limited to prevent spam and expensive duplicate processing.",
"remaining_seconds": 87
}
Field Definitions
Business profile objects contain company identity, classification, location, capability, leadership, competitor, source, and metadata fields. Some fields may be empty if the data is unavailable or could not be confidently verified.
| Field | Type | Description |
|---|---|---|
id |
integer | Unique FastBusiness business profile ID. |
business_name |
string | The official or most commonly recognised business name. |
business_type |
string | The organisation type, such as private, public, government, non-profit, subsidiary, or unknown. |
website_url |
string | The primary website URL for the business. |
linkedin |
string | The official LinkedIn company page, when available. |
abn |
string | Australian Business Number, when available. |
acn |
string | Australian Company Number, when available. |
stock_ticker |
string | The public market ticker symbol, when the business is publicly listed. |
exchange |
string | The stock exchange where the business is listed. |
employee_count |
string | Reported or estimated employee count. |
sector |
string | Broad sector classification for the business. |
industry |
string | More specific industry classification. |
short_description |
string | A short summary describing what the business does. |
quick_company_capabilities_description |
string | A short capability summary describing the products, services, or operational strengths of the business. |
headquarters |
string | The company headquarters location. |
country |
string | The primary country associated with the business. |
competitors |
array | A list of similar or competing organisations found during enrichment. |
competitors[].competitor |
string | The competitor organisation name. |
competitors[].quick_description |
string | A short explanation of why the competitor is relevant. |
competitors[].competitive_score |
number | A relevance or similarity score for the competitor. |
key_people |
array | A list of publicly identified people connected to the business. |
key_people[].name |
string | The person's name. |
key_people[].position |
string | The person's role, title, or position. |
key_people[].description |
string | Short public context about the person, when available. |
sources |
array | Source URLs used to support or build the business profile. |
created_at |
string | ISO timestamp showing when the profile was created. |
updated_at |
string | ISO timestamp showing when the profile was last updated. |
score |
number | Top-level search match score returned by search responses. This is not part of the business profile object. |
Data Guide
Understanding API Data
FastBusiness API returns structured business data with fields that help developers understand company identity, industry, capabilities, key people, competitors, source links, and profile metadata. This section explains match scores, unavailable fields, data sources, and supported country coverage.
Match Scores
Search responses may include a top-level score field. This score
represents how strongly the search query matched an existing saved business profile.
How to read match scores
A higher match score generally means the search query strongly matched the returned business profile. A lower score may mean the result is a weaker match and should be reviewed before being used automatically.
| Field | Used By | Description |
|---|---|---|
score |
GET /api/businesses/search/ |
The top-level search match score returned with a found business profile. |
competitors[].competitive_score |
Business profile responses | A competitor relevance or similarity score for a specific competitor item. |
{
"found": true,
"query": "ugl limited",
"result": {
"id": 9,
"business_name": "UGL Limited"
},
"score": 1.4
}
score field is a search match score. It is not a guarantee of
business data accuracy, completeness, or reliability.
Data Sources
Business profiles may include source URLs showing where profile information was found or which pages supported the generated business profile.
/api/businesses/{id}/sources/
What source data is used for
- Showing where profile information came from.
- Helping users verify generated company information.
- Supporting audit trails in internal research workflows.
- Improving transparency for business profile generation.
curl -X GET "https://fastbusinessapi.com/api/businesses/9/sources/" \
-H "X-User-Email: your@email.com" \
-H "APIKEY: your_api_key" \
-H "Content-Type: application/json"
{
"business_id": 9,
"business_name": "UGL Limited",
"sources": [
"https://www.ugllimited.com",
"https://www.ugllimited.com/about-ugl/leadership",
"https://johnholland.com.au/",
"https://dtinfrastructure.com.au/rail/"
]
}
Supported Countries
FastBusiness API can return business profile data for companies across different countries, but result depth depends on public source availability, company visibility, official websites, registries, and whether enough reliable information can be found.
Country-specific fields
Some fields are tied to specific countries or legal systems. For example,
abn and acn are Australian identifiers, while
stock ticker and exchange fields only apply to publicly listed companies.
| Country / Region | Supported Data | Notes |
|---|---|---|
| Australia | Business name, website, ABN, ACN, industry, headquarters, country, key people, competitors, and sources. | ABN and ACN fields are most relevant for Australian businesses. |
| United States | Business name, website, sector, industry, ticker, exchange, headquarters, country, key people, competitors, and sources. | Public company fields may be available for listed companies. |
| United Kingdom | Business name, website, sector, industry, headquarters, country, key people, competitors, and sources. | Company identifiers may be expanded in future versions. |
| Other countries | Business name, website, sector, industry, description, headquarters, country, competitors, key people, and sources where available. | Availability depends on public source coverage and data quality. |
{
"business_name": "UGL Limited",
"headquarters": "North Sydney, New South Wales",
"country": "Australia",
"abn": "85009180287",
"acn": "009180287"
}
Developer Reference
Build reliably with FastBusiness API
This section explains how errors work, how rate limits are applied, how to make requests from code, and how API keys should be used securely in production applications.
Errors
FastBusiness API returns JSON error responses when a request is missing required information, fails authentication, exceeds limits, or references a resource that cannot be found.
Common error format
Most errors include an error field. Some responses may also include
a message, remaining_seconds, remaining_hours,
or other fields that help your application decide what to do next.
{
"error": "Missing required field: business_name"
}
| Status Code | Meaning | Common Cause |
|---|---|---|
400 |
Bad Request | A required field, query parameter, or request value is missing or invalid. |
403 |
Forbidden | Missing or invalid API key, invalid email header, inactive subscription, or permission failure. |
404 |
Not Found | No matching business profile, lookup result, source list, or generation job was found. |
429 |
Too Many Requests | A generation cooldown, refresh cooldown, or request limit has been reached. |
202 |
Accepted | A generation or refresh job has been queued or is already running. |
{
"error": "Missing search query. Use ?q=company_name"
}
{
"query": "Example Company",
"found": false,
"message": "No good match found.",
"score": 0.28
}
{
"error": "Generation job not found."
}
{
"error": "Please wait before generating another business profile.",
"message": "Profile generation is limited to prevent spam and expensive duplicate processing.",
"remaining_seconds": 87
}
Rate Limits
Rate limits protect the API from spam, accidental loops, and expensive duplicate processing. Limits are checked against your account usage and subscription plan.
How rate limits work
- Each request must belong to an authenticated API user.
- The user must have an active or trial subscription.
- Requests are checked against the account's allowed requests per minute.
- Profile generation has a cooldown to reduce duplicate processing.
- Profile refresh has a separate cooldown because refreshes are heavier operations.
| Limit Type | Applies To | Behaviour |
|---|---|---|
| Requests per minute | All protected API endpoints | Checked against your subscription's max_request_per_min. |
| Generation cooldown | POST /api/businesses/generate/ |
Prevents repeated generation requests within a short cooldown window. |
| Refresh cooldown | POST /api/businesses/{id}/refresh/ |
Prevents the same profile from being refreshed too frequently. |
| Duplicate running job protection | Generate and refresh endpoints | If a matching job is already queued or processing, the existing job is returned. |
| Plan | Requests Per Minute | Monthly Token Allowance |
|---|---|---|
| Starter | 5 requests per minute | 50 tokens |
| Developer | 20 requests per minute | 2,000 tokens |
| Enterprise | 50 requests per minute | 10,000 tokens |
{
"detail": "Sorry you've exceeded the rate limit for this minute. Please wait."
}
{
"error": "Please wait before generating another business profile.",
"message": "Profile generation is limited to prevent spam and expensive duplicate processing.",
"remaining_seconds": 87
}
{
"error": "This business profile was refreshed recently.",
"message": "A business profile can only be refreshed once every 2 days.",
"business_id": 9,
"business_name": "UGL Limited",
"remaining_seconds": 172000,
"remaining_hours": 47.78
}
remaining_seconds
to show a countdown or delay the next request automatically.
Code Examples
These examples show how to call the API using cURL, Python, and JavaScript. Always keep your API key on the backend and never expose it in public frontend code.
curl -X GET "https://fastbusinessapi.com/api/businesses/search/?q=UGL%20Limited" \
-H "X-User-Email: your@email.com" \
-H "APIKEY: your_api_key" \
-H "Content-Type: application/json"
curl -X POST "https://fastbusinessapi.com/api/businesses/generate/" \
-H "X-User-Email: your@email.com" \
-H "APIKEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"business_name": "UGL Limited",
"website_url": "https://www.ugllimited.com",
"country": "Australia"
}'
import requests
BASE_URL = "https://fastbusinessapi.com/api"
headers = {
"X-User-Email": "your@email.com",
"APIKEY": "your_api_key",
"Content-Type": "application/json",
}
response = requests.get(
f"{BASE_URL}/businesses/search/",
headers=headers,
params={"q": "UGL Limited"},
timeout=60,
)
data = response.json()
print(data)
import time
import requests
BASE_URL = "https://fastbusinessapi.com/api"
headers = {
"X-User-Email": "your@email.com",
"APIKEY": "your_api_key",
"Content-Type": "application/json",
}
generate_response = requests.post(
f"{BASE_URL}/businesses/generate/",
headers=headers,
json={
"business_name": "UGL Limited",
"website_url": "https://www.ugllimited.com",
"country": "Australia",
},
timeout=300,
)
generate_data = generate_response.json()
if generate_data.get("status") == "queued":
job_id = generate_data["job_id"]
while True:
job_response = requests.get(
f"{BASE_URL}/businesses/generation-jobs/{job_id}/",
headers=headers,
timeout=60,
)
job_data = job_response.json()
print(job_data["status"], job_data.get("progress_percent"))
if job_data["status"] in ["completed", "failed", "cancelled"]:
break
time.sleep(3)
elif generate_data.get("status") == "existing":
business = generate_data["business"]
print(business)
else:
print(generate_data)
const BASE_URL = "https://fastbusinessapi.com/api";
async function searchBusiness(query) {
const url = `${BASE_URL}/businesses/search/?q=${encodeURIComponent(query)}`;
const response = await fetch(url, {
method: "GET",
headers: {
"X-User-Email": "your@email.com",
"APIKEY": "your_api_key",
"Content-Type": "application/json"
}
});
const data = await response.json();
console.log(data);
return data;
}
searchBusiness("UGL Limited");
const BASE_URL = "https://fastbusinessapi.com/api";
async function generateBusinessProfile() {
const response = await fetch(`${BASE_URL}/businesses/generate/`, {
method: "POST",
headers: {
"X-User-Email": "your@email.com",
"APIKEY": "your_api_key",
"Content-Type": "application/json"
},
body: JSON.stringify({
business_name: "UGL Limited",
website_url: "https://www.ugllimited.com",
country: "Australia"
})
});
const data = await response.json();
console.log(data);
return data;
}
generateBusinessProfile();
API Keys
API keys identify and authenticate your requests. Every protected request must include both the email connected to the user account and an API key that belongs to that user.
/api/api-keys/
Required authentication headers
X-User-Emailmust contain a valid account email address.APIKEYmust contain a valid API key.- The API key must belong to the same user as the email header.
- The account must have an active or trial subscription.
X-User-Email: your@email.com
APIKEY: your_api_key
Content-Type: application/json
curl -X GET "https://fastbusinessapi.com/api/api-keys/" \
-H "X-User-Email: your@email.com" \
-H "APIKEY: your_api_key" \
-H "Content-Type: application/json"
| Validation Step | Failure Message |
|---|---|
| Missing email header | Missing X-User-Email header. |
| Invalid email format | Invalid X-User-Email header. |
| Unknown email | Unknown X-User-Email header. |
| Missing API key | Missing APIKEY header. |
| Invalid API key | Invalid or unknown APIKEY header. |
| Email/key mismatch | APIKEY does not belong to X-User-Email user. |
| No subscription | No active subscription found. |
| Expired subscription | Account subscription expired or invalid. |
Support
Updates and developer support
Stay informed about API changes, new endpoints, response updates, and support options for developers building with FastBusiness API.
Changelog
The changelog tracks important updates to FastBusiness API, including new endpoints, response format changes, authentication updates, and improvements to business profile generation.
Expanded business profile response
Business profile responses now include richer company data such as key people, competitors, company capabilities, source URLs, profile timestamps, identifiers, industry details, headquarters, and country information.
Search response match score added
Search responses now include a top-level match score that helps developers understand how strongly the search query matched the returned saved business profile.
Business generation workflow added
Added support for queued business profile generation. Developers can submit a business name, optionally include a website URL and country, receive a job ID, and poll the generation job endpoint for progress updates.
Refresh workflow and source tracking added
Added profile refresh support and source tracking so developers can refresh saved business profiles and display source URLs beside enriched company data.
Usage, rate limit, and API key handling added
Added request authentication using user email and API key headers, subscription checks, request-per-minute rate limits, generation cooldowns, refresh cooldowns, and API key listing.
Initial API documentation release
Added documentation for authentication, business profile generation, business search, response formats, data fields, source URLs, rate limits, API keys, support guidance, and developer code examples.
Support
Use support when you need help with authentication, API keys, endpoint errors, rate limits, billing access, queued jobs, or unexpected response behaviour.
Before contacting support
- Confirm your request includes both
X-User-EmailandAPIKEY. - Check that your API key belongs to the same user email being sent in the request.
- Make sure your account has an active or trial subscription.
- Check whether you are being rate limited or waiting on a queued generation job.
- Check whether a generate or refresh cooldown is active.
- Include the endpoint, request method, status code, and error response when asking for help.
| Issue | What to include |
|---|---|
| Authentication issue | The endpoint, request method, headers used, and the exact error message returned. |
| Rate limit issue | The endpoint called, time of request, status code, and whether a cooldown response was returned. |
| Generation job issue | The job_id, current job status, progress value, and the business name submitted. |
| Refresh issue | The business profile ID, business name, status code, and any cooldown message returned. |
| Unexpected business data | The business name, returned profile ID, source URLs, and fields that look incorrect or missing. |
| Missing source data | The business profile ID and the response from GET /api/businesses/{id}/sources/. |
| Billing or plan issue | Your account email and the plan or subscription status shown in your dashboard. |
Endpoint: POST /api/businesses/generate/
Business name: UGL Limited
Status code: 429
Error response:
{
"error": "Please wait before generating another business profile.",
"message": "Profile generation is limited to prevent spam and expensive duplicate processing.",
"remaining_seconds": 87
}
Issue:
My app is receiving this response when trying to generate a business profile.
Endpoint: GET /api/businesses/search/?q=UGL%20Limited
Returned profile ID: 9
Field issue: competitors
Source URLs checked:
- https://www.ugllimited.com
- https://www.ugllimited.com/about-ugl/leadership
Issue:
The returned competitor data looks different from what we expected in our application.