Find an API

Search public APIs with auth details & Postman guides

← All APIs

API Reference - Ideal Postcodes

ideal-postcodes · Location

Location No Auth Free & Open location

# Getting Started ## Overview ### Access All API methods are either a `GET`, `POST` or `OPTIONS` request. The API communicates over both HTTPS and plain HTTP using IPv4 and IPv6. We recommend using HTTPS only although HTTP is available. We use appropriate HTTP status codes where possible to indicate the request status. ### Rate Limiting Each IP address is rate limited at 30 requests per second. Tripping the rate limit will result in a 503 response. The autocomplete API also has an addit

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Extract Addresses

Extract a list of complete addresses that match the query ordered by relevance score. This query accepts an optional limit and page query (defaults to 10 and 0 respectively). If a valid postcode is passed as the query string, the entire address list for that postcode is passed as a result. Note, in

https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/addresses?box=example&lat=51.5074&lon=-0.1278&page=1&uprn=example&limit=10&query=test&filter=example&api_key=YOUR_API_KEY&country=US&postcode=example&post_town=example&bias_lonlat=example&bias_country=example&bias_postcode=example&postcode_area=example&postcode_type=example&bias_post_town=example&postcode_sector=example&postcode_outward=example&bias_thoroughfare=example&bias_postcode_area=example&bias_postcode_sector=example&bias_postcode_outward=example&su_organisation_indicator=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/addresses?box=example&lat=51.5074&lon=-0.1278&page=1&uprn=example&limit=10&query=test&filter=example&api_key=YOUR_API_KEY&country=US&postcode=example&post_town=example&bias_lonlat=example&bias_country=example&bias_postcode=example&postcode_area=example&postcode_type=example&bias_post_town=example&postcode_sector=example&postcode_outward=example&bias_thoroughfare=example&bias_postcode_area=example&bias_postcode_sector=example&bias_postcode_outward=example&su_organisation_indicator=example"
import requests
params = {
    "box": "example",
    "lat": "51.5074",
    "lon": "-0.1278",
    "page": "1",
    "uprn": "example",
    "limit": "10",
    "query": "test",
    "filter": "example",
    "api_key": "YOUR_API_KEY",
    "country": "US",
    "postcode": "example",
    "post_town": "example",
    "bias_lonlat": "example",
    "bias_country": "example",
    "bias_postcode": "example",
    "postcode_area": "example",
    "postcode_type": "example",
    "bias_post_town": "example",
    "postcode_sector": "example",
    "postcode_outward": "example",
    "bias_thoroughfare": "example",
    "bias_postcode_area": "example",
    "bias_postcode_sector": "example",
    "bias_postcode_outward": "example",
    "su_organisation_indicator": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/addresses",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/addresses');
url.searchParams.set('box', 'example');
url.searchParams.set('lat', '51.5074');
url.searchParams.set('lon', '-0.1278');
url.searchParams.set('page', '1');
url.searchParams.set('uprn', 'example');
url.searchParams.set('limit', '10');
url.searchParams.set('query', 'test');
url.searchParams.set('filter', 'example');
url.searchParams.set('api_key', 'YOUR_API_KEY');
url.searchParams.set('country', 'US');
url.searchParams.set('postcode', 'example');
url.searchParams.set('post_town', 'example');
url.searchParams.set('bias_lonlat', 'example');
url.searchParams.set('bias_country', 'example');
url.searchParams.set('bias_postcode', 'example');
url.searchParams.set('postcode_area', 'example');
url.searchParams.set('postcode_type', 'example');
url.searchParams.set('bias_post_town', 'example');
url.searchParams.set('postcode_sector', 'example');
url.searchParams.set('postcode_outward', 'example');
url.searchParams.set('bias_thoroughfare', 'example');
url.searchParams.set('bias_postcode_area', 'example');
url.searchParams.set('bias_postcode_sector', 'example');
url.searchParams.set('bias_postcode_outward', 'example');
url.searchParams.set('su_organisation_indicator', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/addresses")
	q := baseURL.Query()
	q.Set("box", "example")
	q.Set("lat", "51.5074")
	q.Set("lon", "-0.1278")
	q.Set("page", "1")
	q.Set("uprn", "example")
	q.Set("limit", "10")
	q.Set("query", "test")
	q.Set("filter", "example")
	q.Set("api_key", "YOUR_API_KEY")
	q.Set("country", "US")
	q.Set("postcode", "example")
	q.Set("post_town", "example")
	q.Set("bias_lonlat", "example")
	q.Set("bias_country", "example")
	q.Set("bias_postcode", "example")
	q.Set("postcode_area", "example")
	q.Set("postcode_type", "example")
	q.Set("bias_post_town", "example")
	q.Set("postcode_sector", "example")
	q.Set("postcode_outward", "example")
	q.Set("bias_thoroughfare", "example")
	q.Set("bias_postcode_area", "example")
	q.Set("bias_postcode_sector", "example")
	q.Set("bias_postcode_outward", "example")
	q.Set("su_organisation_indicator", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/addresses")
uri.query = URI.encode_www_form({
  "box" => "example",
  "lat" => "51.5074",
  "lon" => "-0.1278",
  "page" => "1",
  "uprn" => "example",
  "limit" => "10",
  "query" => "test",
  "filter" => "example",
  "api_key" => "YOUR_API_KEY",
  "country" => "US",
  "postcode" => "example",
  "post_town" => "example",
  "bias_lonlat" => "example",
  "bias_country" => "example",
  "bias_postcode" => "example",
  "postcode_area" => "example",
  "postcode_type" => "example",
  "bias_post_town" => "example",
  "postcode_sector" => "example",
  "postcode_outward" => "example",
  "bias_thoroughfare" => "example",
  "bias_postcode_area" => "example",
  "bias_postcode_sector" => "example",
  "bias_postcode_outward" => "example",
  "su_organisation_indicator" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/addresses?" . http_build_query([
    "box" => "example",
    "lat" => "51.5074",
    "lon" => "-0.1278",
    "page" => "1",
    "uprn" => "example",
    "limit" => "10",
    "query" => "test",
    "filter" => "example",
    "api_key" => "YOUR_API_KEY",
    "country" => "US",
    "postcode" => "example",
    "post_town" => "example",
    "bias_lonlat" => "example",
    "bias_country" => "example",
    "bias_postcode" => "example",
    "postcode_area" => "example",
    "postcode_type" => "example",
    "bias_post_town" => "example",
    "postcode_sector" => "example",
    "postcode_outward" => "example",
    "bias_thoroughfare" => "example",
    "bias_postcode_area" => "example",
    "bias_postcode_sector" => "example",
    "bias_postcode_outward" => "example",
    "su_organisation_indicator" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Email Validation

Query for and validate email addresses.

https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/emails?query=test&api_key=YOUR_API_KEY

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/emails?query=test&api_key=YOUR_API_KEY"
import requests
params = {
    "query": "test",
    "api_key": "YOUR_API_KEY"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/emails",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/emails');
url.searchParams.set('query', 'test');
url.searchParams.set('api_key', 'YOUR_API_KEY');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/emails")
	q := baseURL.Query()
	q.Set("query", "test")
	q.Set("api_key", "YOUR_API_KEY")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/emails")
uri.query = URI.encode_www_form({
  "query" => "test",
  "api_key" => "YOUR_API_KEY"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/emails?" . http_build_query([
    "query" => "test",
    "api_key" => "YOUR_API_KEY"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Phone Number Validation

Query for and validate phone numbers.

https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/phone_numbers?query=test&api_key=YOUR_API_KEY

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/phone_numbers?query=test&api_key=YOUR_API_KEY"
import requests
params = {
    "query": "test",
    "api_key": "YOUR_API_KEY"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/phone_numbers",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/phone_numbers');
url.searchParams.set('query', 'test');
url.searchParams.set('api_key', 'YOUR_API_KEY');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/phone_numbers")
	q := baseURL.Query()
	q.Set("query", "test")
	q.Set("api_key", "YOUR_API_KEY")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/phone_numbers")
uri.query = URI.encode_www_form({
  "query" => "test",
  "api_key" => "YOUR_API_KEY"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/ideal-postcodes.co.uk/3.7.0/phone_numbers?" . http_build_query([
    "query" => "test",
    "api_key" => "YOUR_API_KEY"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with API Reference - Ideal Postcodes?

API Reference - Ideal Postcodes is a Location API. Developers commonly use location APIs for:

  • tracking assets and vehicles in real time
  • building delivery and logistics apps
  • finding nearby businesses or services
  • geo-fencing and location-based notifications
  • address validation and autocomplete

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. API Reference - Ideal Postcodes is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗