Skip to main content
GET
/
service-points
Retrieve a list of service points
curl --request GET \
  --url https://panel.sendcloud.sc/api/v3/service-points \
  --header 'Authorization: Basic <encoded-value>'
{
  "data": {
    "results": [
      {
        "id": 1000001,
        "name": "Stadhuisplein Parcel Shop",
        "carrier": {
          "code": "dhl",
          "name": "DHL",
          "logo_url": "https://cdn.sendcloud.com/global-media/dhl/img/logo.svg",
          "icon_url": "https://cdn.sendcloud.com/global-media/dhl/img/icon.svg"
        },
        "carrier_service_point_id": "NL-00001",
        "carrier_shop_type": "paketshop",
        "general_shop_type": "servicepoint",
        "address": {
          "street": "Stadhuisplein",
          "house_number": "1",
          "postal_code": "5611 EM",
          "city": "Eindhoven",
          "country_code": "NL"
        },
        "position": {
          "latitude": 51.438022,
          "longitude": 5.478543
        },
        "contact": {
          "email": "",
          "phone": ""
        },
        "opening_times": {
          "monday": [
            {
              "start_time": "09:00",
              "end_time": "17:00"
            }
          ],
          "tuesday": [
            {
              "start_time": "09:00",
              "end_time": "17:00"
            }
          ],
          "wednesday": [
            {
              "start_time": "09:00",
              "end_time": "17:00"
            }
          ],
          "thursday": [
            {
              "start_time": "09:00",
              "end_time": "17:00"
            }
          ],
          "friday": [
            {
              "start_time": "09:00",
              "end_time": "17:00"
            }
          ],
          "saturday": null,
          "sunday": null
        },
        "is_open_tomorrow": true,
        "next_open_at": "2026-03-11T09:00:00+01:00",
        "is_expired": false,
        "distance": 85
      },
      {
        "id": 1000002,
        "name": "Stationsplein Parcel Locker",
        "carrier": {
          "code": "postnl",
          "name": "PostNL",
          "logo_url": "https://cdn.sendcloud.com/global-media/postnl/img/logo.svg",
          "icon_url": "https://cdn.sendcloud.com/global-media/postnl/img/icon.svg"
        },
        "carrier_service_point_id": "NL-00002",
        "carrier_shop_type": "pakketautomaat",
        "general_shop_type": "locker",
        "address": {
          "street": "Stationsplein",
          "house_number": "1",
          "postal_code": "5611 AC",
          "city": "Eindhoven",
          "country_code": "NL"
        },
        "position": {
          "latitude": 51.443218,
          "longitude": 5.4816
        },
        "contact": {
          "email": "",
          "phone": ""
        },
        "opening_times": {
          "monday": [
            {
              "start_time": "10:00",
              "end_time": "21:00"
            }
          ],
          "tuesday": [
            {
              "start_time": "10:00",
              "end_time": "21:00"
            }
          ],
          "wednesday": [
            {
              "start_time": "10:00",
              "end_time": "21:00"
            }
          ],
          "thursday": null,
          "friday": [
            {
              "start_time": "10:00",
              "end_time": "21:00"
            }
          ],
          "saturday": [
            {
              "start_time": "10:00",
              "end_time": "21:00"
            }
          ],
          "sunday": null
        },
        "is_open_tomorrow": false,
        "next_open_at": "2026-03-13T10:00:00+01:00",
        "is_expired": false,
        "distance": 919
      }
    ],
    "geocoding": {
      "status": "matched",
      "precision": "street"
    }
  }
}
Returns service points in a given country for selected carriers. This endpoint is designed for checkout and delivery flows where customers need to choose a pickup location. It can be used to display service points on a map, show them as a list, or support automatic service point selection.

Carrier selection

A carrier scope must always be provided. Use carrier_code to search service points for specific carriers, or set use_integration_carriers to true to use the carriers enabled in the authenticated integration’s settings.
carrier_code and use_integration_carriers are mutually exclusive. Exactly one of them must be provided.
In some cases, returned service points may belong to a different carrier than the one that was requested. This can happen when a carrier has been deprecated and superseded by another carrier, or when the requested carrier uses different carrier networks depending on the country. As a result, carrier.code in the response may differ from the requested carrier_code. This is expected behavior.
When a carrier has been deprecated, switching to the replacement carrier code is recommended as soon as the deprecation is announced. Deprecated carrier codes may continue to work for some time through internal mapping, but compatibility after the deprecation deadline is not guaranteed.

Reference point and geocoding

A reference point is the location used to search for nearby service points. It can be provided as coordinates, as a free-text address, or as a structured address split into street, house number, postal code, and city. Free-text address input is usually the best fit when the address comes directly from a checkout form as a single string. Structured address input is useful when address parts are already available separately, because it removes ambiguity and can improve geocoding quality. For example, it makes it clearer which part of the input is the street, house number, postal code, or city.
address, the structured address_* parameters, and latitude/longitude are mutually exclusive. Only one way of providing the reference point can be used in a single request.
The geocoding result can be used to understand whether the address was resolved successfully and, if so, how precise the match is. When data.geocoding.status is not_found, the address could not be resolved and no service points are returned. When the address is resolved, data.geocoding.precision can be used to understand how specific the match is. This can help decide whether the result is precise enough for the current flow. For example, a full address may still resolve only to postal_code or city, which means the search is based on a broader area than the full address.

Search area

When a reference point is available, the API returns the closest matching service points around that location. By default, the closest limit results are returned. The search area can be narrowed in two ways:
  • use radius to return only service points within a given distance from the reference point
  • use ne_latitude, ne_longitude, sw_latitude, and sw_longitude to search within a bounding box
Bounding boxes are especially useful for map-based interfaces where results should match the area currently visible on the map.
radius and the bounding box parameters are mutually exclusive. When using a bounding box, all four bounding box parameters must be provided.

Data freshness

Service point details are refreshed regularly based on carrier updates. Because carriers differ in update frequency and coverage, some records may become outdated over time. This is reflected by the is_expired field. In area-based searches, only service points that are considered fresh enough are returned. When service points are requested explicitly by their identifier, expired service points may still be included in the response.

Results

Requests around a reference point return service points ordered by proximity to that location. Searches based on other filters, such as carrier-specific identifiers, do not have a guaranteed sort order. This endpoint is designed for service point discovery in checkout and map-based flows, so results are not paginated by design. Use limit to control the maximum number of service points returned for the use case. For example, if only the 5 closest service points need to be shown, a lower limit can reduce response size and avoid returning unnecessary results.

Authorizations

Authorization
string
header
required

Basic Authentication using API key and secrets is currently the main authentication mechanism.

Query Parameters

country_code
string
required

Country to retrieve service points for, as an ISO 3166-1 alpha-2 code.

Example:

"NL"

carrier_code
string[]

Carrier codes to filter results by.

Example:
["dhl", "postnl"]
use_integration_carriers
boolean

Filters service points to carriers enabled in the authenticated integration's settings.

address
string

Free-text address used as the reference point for the search.

Example:

"Stadhuisplein 10, Eindhoven"

address_street
string

Street of the reference address.

Example:

"Stadhuisplein"

address_house_number
string

House number of the reference address.

Example:

"10"

address_postal_code
string

Postal code of the reference address.

Example:

"5611 EM"

address_city
string

City of the reference address.

Example:

"Eindhoven"

latitude
number<double>

Latitude of the reference point.

Example:

51.435046

longitude
number<double>

Longitude of the reference point.

Example:

5.479507

ne_latitude
number<double>

Latitude of the north-east corner of the bounding box.

Example:

51.49

ne_longitude
number<double>

Longitude of the north-east corner of the bounding box.

Example:

5.57

sw_latitude
number<double>

Latitude of the south-west corner of the bounding box.

Example:

51.38

sw_longitude
number<double>

Longitude of the south-west corner of the bounding box.

Example:

5.36

radius
integer

Search radius in meters from the reference point.

Required range: 100 <= x <= 50000
Example:

5000

carrier_service_point_id
string[]

Carrier-specific identifiers of the service points to return.

Example:
["12345", "NL98765"]
carrier_shop_type
string

Filters results by carrier-specific shop type.

Example:

"packStation"

general_shop_type
enum<string>[]

Filters results by general shop type. Use this to narrow results without having to handle each carrier's specific shop types separately.

Available options:
servicepoint,
locker,
post_office,
carrier_depot
Example:
["servicepoint", "locker"]
limit
integer
default:100

Maximum number of service points to return.

Required range: 1 <= x <= 200
Example:

100

Response

OK

data
object
required