Documentation
Initial setup
If you're already here, then we assume you have already signed up to one of our postcode lookup plans. If not, head over to plans and signup. This is a quick process — login into PayPal after choosing your plan, accept the billing agreement (you won't be charged for 14 days if signing up to our trial), and you'll be directed to your account where you can get your API key.
Authentication
You only need an API key to use the API. You can pass your API key in one of two ways:
- Query string:
apiKey(recommended for simple tests / quick implementations) - Header:
x-api-key(recommended for server-side usage)
Making a call
The API supports both GET and POST. You will need your API key, a postcode, and a house value.
GET (query string)
Use the endpoint below with apiKey, house, and postcode as query parameters:
https://findaddress.io/API/?apiKey=YOUR_API_KEY&house=10&postcode=SW1A2AA
We recommend removing spaces from the postcode (e.g. SW1A2AA). If you include spaces, URL-encode them (e.g. SW1A%202AA) or replace with +.
POST (form or JSON body)
Send the same keys via POST to:
https://findaddress.io/API/
Supported keys:
apiKey(string)house(string)postcode(string)
$_REQUEST. For POST requests, the most compatible format is
application/x-www-form-urlencoded (form encoded). JSON bodies are supported if you have enabled JSON parsing server-side.
Header authentication (still supported)
If you prefer, you can continue to pass your API key via the standard header:
x-api-key: YOUR_API_KEY
When using header auth, you can still pass house and postcode via query string or POST body.
Example cURL (GET + query string)
curl -X GET "https://findaddress.io/API/?apiKey=YOUR_API_KEY&house=10&postcode=SW1A2AA"
Example cURL (GET + header)
curl -X GET "https://findaddress.io/API/?house=10&postcode=SW1A2AA" \
-H "x-api-key: YOUR_API_KEY"
Example cURL (POST + form encoded)
curl -X POST "https://findaddress.io/API/" \
-H "content-type: application/x-www-form-urlencoded" \
--data "apiKey=YOUR_API_KEY&house=10&postcode=SW1A2AA"
Example cURL (POST + JSON body)
curl -X POST "https://findaddress.io/API/" \
-H "content-type: application/json" \
-d '{"apiKey":"YOUR_API_KEY","house":"10","postcode":"SW1A2AA"}'
Call responses
All responses are returned as JSON and include your remaining daily calls and remaining monthly credits, plus a result and status code.
Successful response
{
"result": "Success",
"callsRemaining": 2928,
"creditsRemaining": 74928,
"latitude": "51.503540",
"longitude": "-0.127695",
"expandedAddress": {
"house": "10",
"street": "Downing street",
"locality": "",
"town": "London",
"district": "Greater london",
"county": "London",
"pCode": "SW1A 2AA"
},
"csvAddress": "10,Downing street,,London,Greater london,London,SW1A 2AA",
"statusCode": "200"
}
Partial Match
Partial matches are returned when we have no direct match in our primary dataset, but our redundancies provide an approximate match (for example, new developments or incomplete street data). Missing fields will be returned as blank.
{
"result": "Partial match",
"callsRemaining": 2928,
"creditsRemaining": 74928,
"latitude": "",
"longitude": "",
"expandedAddress": {
"house": "10",
"street": "",
"locality": "",
"town": "London",
"district": "Greater london",
"county": "London",
"pCode": "SW1A"
},
"csvAddress": "10,Downing street,,London,Greater london,London,SW1A",
"statusCode": "200"
}
Invalid postcode
This response is returned when the postcode is not valid. We validate against multiple sources (including defunct postcodes) and maintain redundancies for coverage. Ensure your postcode is correct and URL-safe (remove spaces or URL-encode them).
{
"result": "Failure",
"callsRemaining": "2913",
"creditsRemaining": "74913",
"errorMsg": "Postal Code Not Valid",
"statusCode": "400"
}
Unauthorised access
This response is returned when your API key is missing/invalid or you do not have an active subscription.
{
"result": "Failure",
"errorMsg": "Unauthorised access",
"statusCode": "401"
}
Exceeded limit responses
These responses are returned if you have exceeded your daily or monthly limits.
{
"result": "Failure",
"errorMsg": "You have exceeded your daily limit",
"statusCode": "429"
}
{
"result": "Failure",
"errorMsg": "You have exceeded your monthly limit",
"statusCode": "429"
}
Subscription lapsed
If your subscription is not renewed, access continues until your current billing period end date. After that you will receive:
{
"result": "Failure",
"errorMsg": "Your subscription ended on 15-02-2026",
"statusCode": "401"
}
Database error
If you receive this response, something has gone wrong at our end. Please contact us so we can investigate.
{
"result": "Failure",
"errorMsg": "Database Error #errNo. - Please contact support @
findaddress.io",
"statusCode": "500"
}
Code examples
Below are real-world UK address lookup API examples using PHP, JavaScript, Python, Laravel and cURL. Each example demonstrates how to validate a postcode and retrieve a complete UK address using findAddress.io.
PHP cURL GET UK Address Lookup API Example
$curl = curl_init();
$url = "https://findaddress.io/API/?apiKey=" . urlencode($apiKey) .
"&house=" . urlencode($house) .
"&postcode=" . urlencode(str_replace(' ', '', $postcode));
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
PHP cURL GET Address API with API Key Header Example
$curl = curl_init();
$url = "https://findaddress.io/API/?house=" . urlencode($house) .
"&postcode=" . urlencode(str_replace(' ', '', $postcode));
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"content-type: application/json",
"x-api-key: " . $apiKey
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
PHP cURL POST Form Encoded UK Address Lookup API Example
<?php
$apiKey = "YOUR_API_KEY";
$house = "10";
$postcode = "SW1A2AA";
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://findaddress.io/API/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
"apiKey" => $apiKey,
"house" => $house,
"postcode" => $postcode
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/x-www-form-urlencoded"
],
CURLOPT_TIMEOUT => 30
]);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo "cURL Error: " . curl_error($ch);
} else {
echo $response;
}
curl_close($ch);
?>
PHP cURL POST JSON Address Lookup API Example
<?php
$data = [
"apiKey" => "YOUR_API_KEY",
"house" => "10",
"postcode" => "SW1A2AA"
];
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://findaddress.io/API/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
CURLOPT_TIMEOUT => 30
]);
$response = curl_exec($ch);
echo $response;
curl_close($ch);
?>
JavaScript Fetch GET Address Lookup API Example
const apiKey = "YOUR_API_KEY";
const house = "10";
const postcode = "SW1A2AA";
fetch(`https://findaddress.io/API/?apiKey=${encodeURIComponent(apiKey)}&house=${encodeURIComponent(house)}&postcode=${encodeURIComponent(postcode)}`, {
method: "GET"
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
JavaScript Fetch POST Address Lookup API Example (Form Encoded)
const body = new URLSearchParams();
body.append("apiKey", "YOUR_API_KEY");
body.append("house", "10");
body.append("postcode", "SW1A2AA");
fetch("https://findaddress.io/API/", {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded;charset=UTF-8" },
body: body.toString()
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
jQuery Address Lookup API Example (UK Postcode)
$.ajax({
url: "https://findaddress.io/API/",
method: "POST",
data: {
apiKey: "YOUR_API_KEY",
house: "10",
postcode: "SW1A2AA"
}
}).done(function(resp){
console.log(resp);
});
Axios UK Address Lookup API Example
const axios = require("axios");
axios.get("https://findaddress.io/API/", {
params: {
apiKey: "YOUR_API_KEY",
house: "10",
postcode: "SW1A2AA"
}
})
.then(response => console.log(response.data))
.catch(error => console.error(error));
Python Requests Address Lookup API Example
import requests
url = "https://findaddress.io/API/"
params = {"apiKey": "YOUR_API_KEY", "house": "10", "postcode": "SW1A2AA"}
response = requests.get(url, params=params)
print(response.json())
Laravel HTTP Client Address Lookup API Example (Form Encoded)
use Illuminate\Support\Facades\Http;
$response = Http::asForm()->post('https://findaddress.io/API/', [
'apiKey' => 'YOUR_API_KEY',
'house' => '10',
'postcode' => 'SW1A2AA',
]);
return $response->json();
cURL Shell UK Address Lookup API Example
curl -X GET "https://findaddress.io/API/?apiKey=YOUR_API_KEY&house=10&postcode=SW1A2AA"