curl --request GET \
--url https://servicepoints.sendcloud.sc/api/v2/service-points \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://servicepoints.sendcloud.sc/api/v2/service-points"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://servicepoints.sendcloud.sc/api/v2/service-points', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://servicepoints.sendcloud.sc/api/v2/service-points",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://servicepoints.sendcloud.sc/api/v2/service-points"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://servicepoints.sendcloud.sc/api/v2/service-points")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://servicepoints.sendcloud.sc/api/v2/service-points")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body[
{
"id": 10875349,
"code": "217165",
"is_active": true,
"shop_type": "parcelShop",
"general_shop_type": "servicepoint",
"extra_data": {
"partner_name": "PostNL",
"sales_channel": "AFHAALPUNT",
"terminal_type": "NRS",
"retail_network_id": "PNPNL-01"
},
"name": "Example Parcel Shop",
"street": "Voorbeeldstraat",
"house_number": "12",
"postal_code": "5611AG",
"city": "EINDHOVEN",
"latitude": "51.441444",
"longitude": "5.475185",
"email": "info@example.com",
"phone": "+31401234567",
"homepage": "https://www.example.com",
"carrier": "postnl",
"country": "NL",
"formatted_opening_times": {
"0": [
"10:00 - 20:00"
],
"1": [
"10:00 - 20:00"
],
"2": [
"10:00 - 20:00"
],
"3": [
"10:00 - 20:00"
],
"4": [
"10:00 - 20:00"
],
"5": [
"10:00 - 18:00"
],
"6": []
},
"open_tomorrow": true,
"open_upcoming_week": true,
"distance": 381
},
{
"id": 20948712,
"code": "DE-4291",
"is_active": true,
"shop_type": "packStation",
"general_shop_type": "locker",
"extra_data": {},
"name": "Packstation 142",
"street": "Voorbeeldlaan",
"house_number": "2",
"postal_code": "5611AZ",
"city": "EINDHOVEN",
"latitude": "51.438200",
"longitude": "5.478600",
"email": "",
"phone": "",
"homepage": "",
"carrier": "dhl",
"country": "NL",
"formatted_opening_times": {
"0": [
"00:00 - 23:59"
],
"1": [
"00:00 - 23:59"
],
"2": [
"00:00 - 23:59"
],
"3": [
"00:00 - 23:59"
],
"4": [
"00:00 - 23:59"
],
"5": [
"00:00 - 23:59"
],
"6": [
"00:00 - 23:59"
]
},
"open_tomorrow": true,
"open_upcoming_week": true,
"distance": 520
},
{
"id": 30581927,
"code": "IT-89201",
"is_active": true,
"shop_type": "punto_poste",
"general_shop_type": "post_office",
"extra_data": {
"partner_name": "Poste Italiane"
},
"name": "Post Office Eindhoven",
"street": "Voorbeeldweg",
"house_number": "48",
"postal_code": "5611ET",
"city": "EINDHOVEN",
"latitude": "51.439100",
"longitude": "5.479300",
"email": "",
"phone": "",
"homepage": "",
"carrier": "poste_italiane",
"country": "NL",
"formatted_opening_times": {
"0": [
"09:00 - 17:00"
],
"1": [
"09:00 - 17:00"
],
"2": [
"09:00 - 17:00"
],
"3": [
"09:00 - 17:00"
],
"4": [
"09:00 - 17:00"
],
"5": [],
"6": []
},
"open_tomorrow": true,
"open_upcoming_week": true,
"distance": 680
}
]Retrieve a list of service points
Retrieve a list of available service points and the associated service point id.
curl --request GET \
--url https://servicepoints.sendcloud.sc/api/v2/service-points \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://servicepoints.sendcloud.sc/api/v2/service-points"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://servicepoints.sendcloud.sc/api/v2/service-points', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://servicepoints.sendcloud.sc/api/v2/service-points",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://servicepoints.sendcloud.sc/api/v2/service-points"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://servicepoints.sendcloud.sc/api/v2/service-points")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://servicepoints.sendcloud.sc/api/v2/service-points")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body[
{
"id": 10875349,
"code": "217165",
"is_active": true,
"shop_type": "parcelShop",
"general_shop_type": "servicepoint",
"extra_data": {
"partner_name": "PostNL",
"sales_channel": "AFHAALPUNT",
"terminal_type": "NRS",
"retail_network_id": "PNPNL-01"
},
"name": "Example Parcel Shop",
"street": "Voorbeeldstraat",
"house_number": "12",
"postal_code": "5611AG",
"city": "EINDHOVEN",
"latitude": "51.441444",
"longitude": "5.475185",
"email": "info@example.com",
"phone": "+31401234567",
"homepage": "https://www.example.com",
"carrier": "postnl",
"country": "NL",
"formatted_opening_times": {
"0": [
"10:00 - 20:00"
],
"1": [
"10:00 - 20:00"
],
"2": [
"10:00 - 20:00"
],
"3": [
"10:00 - 20:00"
],
"4": [
"10:00 - 20:00"
],
"5": [
"10:00 - 18:00"
],
"6": []
},
"open_tomorrow": true,
"open_upcoming_week": true,
"distance": 381
},
{
"id": 20948712,
"code": "DE-4291",
"is_active": true,
"shop_type": "packStation",
"general_shop_type": "locker",
"extra_data": {},
"name": "Packstation 142",
"street": "Voorbeeldlaan",
"house_number": "2",
"postal_code": "5611AZ",
"city": "EINDHOVEN",
"latitude": "51.438200",
"longitude": "5.478600",
"email": "",
"phone": "",
"homepage": "",
"carrier": "dhl",
"country": "NL",
"formatted_opening_times": {
"0": [
"00:00 - 23:59"
],
"1": [
"00:00 - 23:59"
],
"2": [
"00:00 - 23:59"
],
"3": [
"00:00 - 23:59"
],
"4": [
"00:00 - 23:59"
],
"5": [
"00:00 - 23:59"
],
"6": [
"00:00 - 23:59"
]
},
"open_tomorrow": true,
"open_upcoming_week": true,
"distance": 520
},
{
"id": 30581927,
"code": "IT-89201",
"is_active": true,
"shop_type": "punto_poste",
"general_shop_type": "post_office",
"extra_data": {
"partner_name": "Poste Italiane"
},
"name": "Post Office Eindhoven",
"street": "Voorbeeldweg",
"house_number": "48",
"postal_code": "5611ET",
"city": "EINDHOVEN",
"latitude": "51.439100",
"longitude": "5.479300",
"email": "",
"phone": "",
"homepage": "",
"carrier": "poste_italiane",
"country": "NL",
"formatted_opening_times": {
"0": [
"09:00 - 17:00"
],
"1": [
"09:00 - 17:00"
],
"2": [
"09:00 - 17:00"
],
"3": [
"09:00 - 17:00"
],
"4": [
"09:00 - 17:00"
],
"5": [],
"6": []
},
"open_tomorrow": true,
"open_upcoming_week": true,
"distance": 680
}
]address in combination with a search radius.
How carriers are selected
- If the
carrierparameter is not provided, service points for all carriers enabled in your integration settings are returned. - If the
carrierparameter is provided, only service points for the specified carriers are returned. All requested carriers must be enabled in your integration settings — if any are not, a400error is returned.
Notes
- If provided,
latitudeandlongitudespecify a reference point from which adistancewill be computed for each service point, and returned with the response. - Some carriers impose limits for certain service points. For this reason, you can specify the
weightparameter to ensure that only usable service points are returned. Currently this only applies to Poste Italiane, which excludespunto_posteservice points when the weight exceeds 15 kg. - If provided,
postal_codewill return a list of service points which are located exactly within the bounds of the specified postal code area. - The
addressparameter retrieves a list of service points closest to the geocoded location. You can limit the results through theradiusparameter. - The
addressparameter accepts postal codes in addition to street names. - The
addressparameter should not be used together withcity,postal_code, orhouse_number, as those perform exact matching.
Authorizations
Query Parameters
A free-text string that is geocoded to find service points near the resolved location. Can accept a street name, house number, postal code, or a combination.
Avoid mixing with the city, postal_code, or house_number parameters, as those perform strict exact matching (e.g. city=Munich would return no results, while city=München would). Combining free-form and strict filters is technically possible but should be done with caution.
"Stadhuisplein 10"
Filters results by Sendcloud's normalized shop type. Carrier-specific shop types are mapped to a fixed set of values, making it easier to filter consistently across carriers. Accepts a single value (e.g., servicepoint) or a comma-separated list of values (e.g., servicepoint,locker,post_office).
Possible options:
servicepointlockerpost_officecarrier_depot
"servicepoint"
Response
OK
Indicates whether the service point data was recently updated via scraping within a carrier-specific expiration period.
This field reflects data freshness, not operational availability.
To check if a service point is operationally open, use open_tomorrow or open_upcoming_week instead.
The opening hours for each day of the week, keyed by day number (0 = Monday, 6 = Sunday).
Each day contains an array of time range strings. An empty array indicates the service point is closed on that day.
This field is dynamically computed for the current week. It takes the regular opening hours as a base and applies any exceptions reported by the carrier (e.g. reduced hours or closures on holidays). For example, if a service point is normally open 07:00–22:00 every day but has reduced hours on Christmas Eve and is closed on Christmas Day, those overrides will be reflected in the output for that week.
Show child attributes
Show child attributes