Welcome to the TPSCheck.uk API! This comprehensive guide covers everything you need to integrate real-time TPS/CTPS verification into your applications, from authentication and single number checks to bulk processing and advanced features.
The default API version is currently v1. If you do not send ?version=2, you will receive the v1 response format. This documentation defaults to showing the v2 format so you can adopt it. Use the query parameter version=2 on check and batch requests to get the enriched v2 response. Risk scoring is returned only when using ?version=2; v1 responses do not include a risk field.
TPSCheck.uk is a robust API that allows businesses to verify and secure their calls by checking if a phone number is registered with the Telephone Preference Service (TPS) or Corporate Telephone Preference Service (CTPS). It provides real-time verification and valuable insights on the validity, location, type, and provider of the phone number.
The Telephone Preference Service (TPS) and Corporate Telephone Preference Service (CTPS) are official UK registries that enable individuals and businesses to opt out of unsolicited sales and marketing calls. By registering their numbers, they indicate a preference against receiving cold calls. Organisations must legally respect these registrations to ensure a disturbance-free communication environment.
TPSCheck.uk offers a robust API that ensures seamless integration for businesses of all sizes. The API provides real-time verification of phone numbers against the TPS/CTPS database, along with details on validity, location, type, and provider. Designed for scalability, it can efficiently handle both individual and bulk requests. With a strong emphasis on data security and backed by a dedicated support team, TPSCheck.uk's API offers a reliable, efficient, and secure solution for all your phone number verification needs.
Follow these simple steps to start using the TPSCheck.uk API. The entire process takes just a few minutes, and you'll be making your first API calls in no time.
https://api.tpscheck.uk/ with your API key in the Authorization header
Once you have your API key, you'll be able to:
All API requests should be made to: https://api.tpscheck.uk/
Start with 50 free checks per month. View all plans or explore the Product Guide.
The TPSCheck.uk API uses API key authentication to secure all requests. Every API call must include your unique API key to verify your identity and track usage against your account limits.
Include your API key in the Authorization header of every request using the Token prefix:
Authorization: Token YOUR_API_KEY
If authentication fails, you'll receive a 401 Unauthorized response. Common causes include:
Authorization headerCheck the API health and current version. This endpoint is public and does not require authentication—perfect for monitoring and health checks.
This is a public endpoint. No API key or authentication is needed.
| Field | Type | Description |
|---|---|---|
status |
String | API health status. Returns "ok" when the API is operational. |
version |
String | Current API version number. |
# Check API status (no authentication required)
curl -X GET "https://api.tpscheck.uk/status"
{
"status": "ok",
"version": "1.0.0"
}
No API key required. This endpoint is ideal for uptime monitoring and health checks.
The primary endpoint for checking a single phone number against the TPS/CTPS registry:
| Parameter | Type | Required | Description |
|---|---|---|---|
| phone | string | Yes | The UK phone number to verify (landline or mobile) |
| version query | string | No | Response format: 1 (default, legacy) or 2 (enriched with line and reachability) |
| Field | Type | Description |
|---|---|---|
input | String | The phone number as submitted. |
e164 | String | E.164 formatted number (e.g. +441942205504). |
valid | Boolean | Whether the phone number is valid. |
line | Object | Line details: type, original_carrier, location, country, prefix. |
reachability | Object | Reachability: status, confidence. |
tps | Boolean | Whether the number is registered with TPS. |
ctps | Boolean | Whether the number is registered with CTPS. |
| Field | Type | Description |
|---|---|---|
phone | String | The phone number that was verified. |
valid | Boolean | Indicates whether the phone number is valid. |
type | String | The type of the phone number (e.g., Landline, Mobile). |
location | String | The location associated with the phone number. |
provider | String | The service provider of the phone number. |
tps | Boolean | Whether the number is registered with TPS. |
ctps | Boolean | Whether the number is registered with CTPS. |
Example uses ?version=2. Omit the parameter to receive the default v1 response format.
curl -X POST \
"https://api.tpscheck.uk/check?version=2" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone": "01829 830730"}'
{
"phone": "01829 830730"
}
{
"input": "01829 830730",
"e164": "+441829830730",
"valid": true,
"line": {
"type": "landline",
"original_carrier": "BT",
"location": "Tarporley",
"country": "England",
"prefix": "01829"
},
"reachability": {
"status": "unknown",
"confidence": "medium"
},
"tps": false,
"ctps": false
}
{
"phone": "01829 830730",
"valid": true,
"type": "Landline",
"location": "Tarporley",
"provider": "BT",
"tps": false,
"ctps": false
}
Each request will use 1 credit from your account. Get your API key. The default API response is v1; choose v2 below to request the enriched format.
This endpoint is available on Pro plans and above. Upgrade your plan to access batch checking.
Check multiple phone numbers in a single request (up to 100 numbers):
| Parameter | Type | Required | Description |
|---|---|---|---|
| phones | array | Yes | Array of UK phone numbers to verify (max 100 per request) |
| version query | string | No | Response format: 1 (default, legacy) or 2 (enriched with line and reachability) |
| Field | Type | Description |
|---|---|---|
total | Integer | Number of results. |
results | Array | Array of check results (v2 shape: input, e164, valid, line, reachability, tps, ctps). |
| Field | Type | Description |
|---|---|---|
results | Array | Array of check results for each phone number. |
results[].phone | String | The phone number that was verified. |
results[].valid | Boolean | Whether the phone number is valid. |
results[].tps | Boolean | Whether the number is registered with TPS. |
results[].ctps | Boolean | Whether the number is registered with CTPS. |
Example uses ?version=2. Omit the parameter to receive the default v1 response format.
curl -X POST \
"https://api.tpscheck.uk/batch?version=2" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phones": ["01564 331484", "01953 498974", "07954 844224"]}'
{
"phones": [
"01564 331484",
"01953 498974",
"07954 844224"
]
}
{
"total": 3,
"results": [
{
"input": "01564 331484",
"e164": "+441564331484",
"valid": true,
"line": { "type": "landline", "original_carrier": "Gamma Telecom Holdings Ltd", "location": "Lapworth", "country": "England", "prefix": "01564" },
"reachability": { "status": "unknown", "confidence": "medium" },
"tps": false,
"ctps": false
},
{
"input": "01953 498974",
"e164": "+441953498974",
"valid": true,
"line": { "type": "landline", "original_carrier": "BT", "location": "Wymondham", "country": "England", "prefix": "01953" },
"reachability": { "status": "unknown", "confidence": "medium" },
"tps": true,
"ctps": false
},
{
"input": "07954 844224",
"e164": "+447954844224",
"valid": true,
"line": { "type": "mobile", "original_carrier": "EE Limited", "location": "Bristol", "country": "England", "prefix": "07954" },
"reachability": { "status": "unknown", "confidence": "medium" },
"tps": false,
"ctps": false
}
]
}
{
"results": [
{
"phone": "01564 331484",
"valid": true,
"type": "Landline",
"location": "Lapworth",
"provider": "Gamma Telecom Holdings Ltd",
"tps": false,
"ctps": false
},
{
"phone": "01953 498974",
"valid": true,
"type": "Landline",
"location": "Wymondham",
"provider": "BT",
"tps": true,
"ctps": false
},
{
"phone": "07954 844224",
"valid": true,
"type": "Mobile",
"location": "Bristol",
"provider": "EE Limited",
"tps": false,
"ctps": false
}
]
}
Each number uses 1 credit. Get your API key. The default API response is v1; choose v2 below to request the enriched format.
Check your API usage and remaining requests for the current billing period:
This endpoint only requires your API key in the Authorization header.
| Field | Type | Description |
|---|---|---|
requests_used |
Integer | Number of API requests made this billing period. |
requests_remaining |
Integer | Number of requests still available this period. |
monthly_limit |
Integer | Total requests allowed per billing period. |
plan |
String | Your current subscription plan name. |
reset_date |
String | When your usage will reset (ISO 8601 format). |
# Check your remaining credits
curl -X GET \
"https://api.tpscheck.uk/credits" \
-H "Authorization: Token YOUR_API_KEY"
{
"requests_used": 245,
"requests_remaining": 9755,
"monthly_limit": 10000,
"plan": "Starter",
"reset_date": "2025-07-01T00:00:00Z"
}
Checking your credits does not consume any credits.
The API uses standard HTTP response codes to indicate the success or failure of requests.
| Code | Status | Description |
|---|---|---|
| 200 | OK | The request was successful. |
| 400 | Bad Request | The request was invalid or missing required parameters. |
| 401 | Unauthorized | Authentication failed or API key is missing. |
| 403 | Forbidden | You do not have permission to access this resource. |
| 429 | Too Many Requests | You have exceeded the rate limit or have insufficient credits. |
| 500 | Server Error | Something went wrong on our end. |
The API has the following rate limits based on your plan:
| Plan | Requests per Second | Requests per Month |
|---|---|---|
| Free | 5/min (0.083/sec) |
200 |
| Starter | 10/sec | 50.000 (monthly) 100.000 (annual) |
| Advanced | 100/sec | 50.000 (monthly) 100.000 (annual) |
Rate limits are enforced per second for API requests. If you exceed your rate limit, you'll receive a 429 Too Many Requests response. Monthly limits are reset based on your billing cycle.
Data freshness refers to how often our TPS/CTPS database is refreshed with the latest registration data from official sources. This directly impacts the accuracy and compliance of your phone number checks.
The TPS and CTPS registers are dynamic - phone numbers are constantly being added or removed. Using outdated data can lead to:
Different plans offer different data update frequencies to match your compliance needs:
| Plan | Update Frequency | Best For |
|---|---|---|
| Free | Monthly | Testing and occasional checks |
| Starter | Weekly | Small businesses with low-volume campaigns |
| Pro | Weekly | Growing teams with regular compliance needs |
| Business | Daily | Ongoing compliance and high-volume operations |
| Unlimited | Daily | Enterprise-scale operations |
| Enterprise | Real-time | Mission-critical compliance with instant updates |
ICO guidance recommends screening at least every 28 days before making marketing calls. Organisations should check phone numbers against the TPS register within this interval.
Under ICO guidance, a TPS check performed on January 1st is typically considered valid for calls made up to January 28th. After that, the number should be re-checked before any new calls. Our 28-Day Re-check Automation feature (available on Business+ plans) automatically monitors and re-checks your numbers to help you stay within this guidance.
Our database synchronization process works differently depending on your plan:
To maintain optimal compliance:
If your business requires more frequent data updates than your current plan provides, consider upgrading to a higher tier. Enterprise plans with real-time updates ensure you always have access to the most current TPS/CTPS data available. View all plans
The Data Use and Access Act 2025 (Royal Assent June 2025) introduced significant changes to UK direct marketing regulation. Organisations relying on TPS/CTPS checking should be aware of the following:
| Change | Detail | Impact |
|---|---|---|
| Increased PECR Fines | Maximum penalty raised from £500,000 to £17.5 million or 4% of global turnover | Significantly higher financial risk for non-compliance |
| Attempted Communications | PECR scope expanded to cover attempted communications, not only completed calls | Dialling a TPS-registered number may itself constitute a breach, even if the call is not answered |
| Charitable Marketing Exemption | A new exemption allows registered charities to make live marketing calls to past donors under defined conditions | Charities should seek legal advice before relying on this exemption |
| Cookie Consent | Amendments to PECR cookie consent rules, including expanded legitimate interest grounds for certain analytics cookies | Organisations should review their cookie consent mechanisms |
The ICO is expected to publish updated direct marketing guidance in Spring 2026 reflecting these changes. We recommend reviewing your compliance processes once the new guidance is available. For the latest information, visit the ICO's direct marketing page.
Ready-to-use code examples in multiple programming languages. Examples request the v2 response format. Omit ?version=2 to use the default v1 response format.
curl --request POST \
--url https://api.tpscheck.uk/check?version=2 \
--header 'Authorization: Token YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"phone": "01829 830730"
}'
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tpscheck.uk/check?version=2",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"phone\":\"01829 830730\"}",
CURLOPT_HTTPHEADER => [
"Authorization: Token YOUR_API_KEY",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import requests
import json
url = "https://api.tpscheck.uk/check?version=2"
payload = json.dumps({
"phone": "01829 830730"
})
headers = {
'Authorization': 'Token YOUR_API_KEY',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
const options = {
method: 'POST',
headers: {
Authorization: 'Token YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
phone: '01829 830730'
})
};
fetch('https://api.tpscheck.uk/check?version=2', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
TPS & CTPS Checking verifies phone numbers against the UK's official do-not-call registers, ensuring compliance with UK Privacy and Electronic Communications Regulations (PECR).
UK PECR requires organisations to screen phone numbers against the TPS before making marketing calls. ICO guidance recommends screening at least every 28 days. The ICO can impose fines of up to £17.5 million or 4% of global turnover for serious violations (Data Use and Access Act 2025).
The Data Use and Access Act 2025 also expanded PECR's scope to cover attempted communications (not just completed calls), introduced a charitable marketing exemption under defined conditions, and amended cookie consent rules. The ICO is expected to publish updated direct marketing guidance in Spring 2026 reflecting these changes.
Phone Intelligence provides additional information about every phone number you check, delivered automatically alongside your TPS and CTPS results at no extra cost.
| Data Point | Description | Availability |
|---|---|---|
| Line Type | Mobile, landline, VoIP, premium rate, toll-free, or personal numbering | All numbers |
| Original Carrier | The network operator the number was allocated to (e.g., Vodafone, EE, O2, BT) | All numbers |
| Location | Geographic area (e.g., London, Manchester, Birmingham) | Landlines only |
| Country | Country code confirmation (GB) | All numbers |
Phone Intelligence is included with every TPS check on all plans. This data is sourced from official Ofcom numbering allocations and updated regularly.
Bulk Checking allows you to validate multiple phone numbers against the TPS and CTPS registers in a single request, rather than checking them one at a time. Available on Starter, Pro, Business, and Enterprise plans.
| Plan | Numbers Per Request | Monthly Allowance |
|---|---|---|
| Starter | Up to 100 | 10,000 |
| Pro | Up to 100 | 50,000 |
| Business | Up to 100 | 150,000 |
| Enterprise | Custom | 500,000+ |
See the Batch Endpoint section for technical implementation details.
28-Day Re-check Automation continuously monitors your phone number lists and automatically re-checks them against TPS/CTPS registers before the recommended compliance window expires. Available on Growth, Business, and Enterprise plans.
ICO guidance recommends screening at least every 28 days before making marketing calls. Manual tracking is error-prone and impractical for large contact lists.
| Benefit | Description |
|---|---|
| Set-and-Forget Compliance | Once registered, the system handles everything automatically |
| 3-Day Safety Buffer | Re-checks on Day 25, not Day 28, providing margin for error |
| Instant Alerts | Know immediately when a number joins the TPS register |
| Complete Audit Trail | Full history of all checks for regulatory evidence |
Audit Logs maintain a complete, tamper-evident record of every TPS check your organisation performs. Available on Pro, Business, and Enterprise plans.
If the Information Commissioner's Office (ICO) investigates your organisation for PECR violations, saying "we checked TPS" is not sufficient. The ICO requires timestamped evidence demonstrating proper verification.
| Data Point | Description |
|---|---|
| Phone Number | The number submitted for verification |
| TPS/CTPS Result | Registration status at exact time of check |
| Timestamp | Precise date and time of check |
| User/API Key | Which team member or system performed check |
| Result Details | Line type, carrier, location, validity data |
Audit logs are retained for 12 to 24 months (configurable), exceeding the 28-day screening interval (ICO guidance) and ensuring evidence for the full period regulators may investigate.
Webhook Notifications automatically send real-time alerts to your systems when important events occur. Available on Pro, Business, and Enterprise plans.
| Event | Description |
|---|---|
| Bulk Job Completed | Your batch processing job has finished and results are ready |
| TPS Status Changed | A monitored number has been newly registered on TPS or CTPS |
| Credits Running Low | Remaining credits dropped below configured threshold |
| Usage Limit Approaching | Monthly usage nearing plan limit |
| Subscription Changes | Plan upgrades, downgrades, or billing updates |
Compliance Risk Scoring provides an overall risk score from 0 to 100 for each phone number you check. Available on Business and Enterprise plans only. The risk field is returned only when you use ?version=2 on check or batch requests; v1 responses do not include risk.
TPS status alone does not tell the full compliance story. A number may not be on TPS, but could be invalid, flagged for spam, or your check might be outdated beyond the 28-day interval recommended by ICO guidance.
| Factor | Description |
|---|---|
| TPS/CTPS Registration | Whether number is registered on preference services |
| Days Since Last Check | Numbers not checked within 28 days carry higher risk (per ICO guidance) |
| Number Validity | Whether number is valid, reachable, and correctly formatted |
| Community Spam Reports | Aggregated reports flagging numbers with complaints |
| Line Type | Personal mobile and landline numbers have different risk profiles |
| Score Range | Level | Guidance |
|---|---|---|
| 0-25 | LOW | Low compliance risk based on available data. |
| 26-50 | MEDIUM | Proceed with caution. Consider flagged risk factors. |
| 51-75 | HIGH | Review before calling. Manual assessment recommended. |
| 76-100 | CRITICAL | Strongly consider not calling. Multiple serious compliance concerns. |
Not legal or compliance advice. You are responsible for your own compliance with applicable laws.
White-Label Options allow agencies and resellers to offer TPS checking services under their own brand. Available on Enterprise plans only.
| Approach | Description |
|---|---|
| Resell at Your Pricing | Set your own rates and margins for TPS services |
| Bundle with Services | Include TPS checking in larger packages |
| Value-Add for Clients | Offer as additional benefit to strengthen relationships |
Contact our Enterprise team to discuss white-label partnership options.
Our Service Level Agreement (SLA) provides a contractual guarantee of service availability with financial compensation if we fail to meet our commitment. Available on Business and Enterprise plans.
We guarantee 99.9% uptime for the TPSCheck API, which means:
If we fall short, you automatically qualify for service credits:
| Monthly Uptime | Credit Amount |
|---|---|
| 99.0% - 99.9% | 10% of monthly fee |
| 95.0% - 99.0% | 25% of monthly fee |
| Below 95.0% | 50% of monthly fee |
Track our service status in real-time at status.tpscheck.uk
When compliance is on the line, you need fast answers. Priority Support ensures paying customers receive faster response times and dedicated support channels.
| Plan | Response Time | Channels |
|---|---|---|
| Free / PAYG | Community support | Documentation only |
| Starter | 48-hour response | |
| Pro | 24-hour response | Priority email |
| Business | 4-hour response | Priority email, phone |
| Enterprise | 1-hour response | Priority email, phone, dedicated Slack |
Support is available during UK business hours: Monday to Friday, 9:00 AM - 5:30 PM GMT/BST
Enterprise customers can discuss extended support hours as part of their service agreement.
Enterprise customers receive a dedicated support team and named account manager who understands your business and provides proactive compliance guidance.
This section covers everything you need to successfully integrate TPSCheck into your systems and workflows.
Need help integrating TPSCheck with your specific systems? We provide guidance for:
The TPSCheck API is a RESTful service that accepts JSON payloads and returns JSON responses. All endpoints require authentication via API key in the Authorization header.
Key features include:
Single Sign-On (SSO) enables Enterprise customers to authenticate their users through their existing identity provider, streamlining access management and enhancing security. Available on Enterprise plans only.
Contact our Enterprise team at enterprise@tpscheck.uk to configure SSO for your organization.