RingGo
RingGo's UK pay-by-phone parking: the councils and operators it takes payment for; every zone one operator runs, with its RingGo location code and coordinates; the zones nearest a point, with postcode, distance, spaces, live occupancy and emissions zone; and one zone's tariffs, fees and stay limits.
Call these actions with your String API key; see Authentication. Every call answers with the envelope described in Responses & errors, whose data holds the rows below.
- Site:
ringgo - Version:
1.0.0 - Reads from:
myringgo.co.uk
| Action | Description | Listed price |
|---|---|---|
operators | Find the councils and parking companies RingGo takes payment for by part of their name, with the operatorId that zones takes. | Billed per request at your plan's rates |
zones | List every parking zone one RingGo operator runs, such as all of a council's on-street zones: location code, name, area and coordinates. Name the operator by operatorId or by name. | Billed per request at your plan's rates |
nearby | Find the RingGo parking zones nearest a point, nearest first: location code, name, postcode, distance, on-street or car park, spaces, live occupancy, emissions zone, vehicle restrictions, notes and operator. | Billed per request at your plan's rates |
tariffs | Read the prices for RingGo parking zones by location code: each zone's tariffs by day and time of day, RingGo's fees on top, minimum and maximum stay, and the operator's pricing notes. | Billed per request at your plan's rates |
operators
Find the councils and parking companies RingGo takes payment for by part of their name, with the operatorId that zones takes.
POST https://request.usestring.ai/v1/integrations/ringgo/operatorsInput
Unknown fields are rejected.
| Field | Type | Description |
|---|---|---|
query | string | Required. Part of an operator's name, such as Westminster, Camden or NCP. |
Output
data is an array of rows, one per result. Each row has:
| Field | Type | Description |
|---|---|---|
operatorId | integer | The operator's RingGo id, which zones takes. |
name | string | — |
Example
curl https://request.usestring.ai/v1/integrations/ringgo/operators \
-H "Authorization: Bearer $STRING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "Westminster"
}'data starts with these rows:
[
{
"operatorId": 42152,
"name": "Westminster City Council"
}
]Requests and billing
- Requests: 2 Web Access requests per call.
- Billing:
passthrough. Each request the action makes bills at its own rate on your plan; there is no separate charge for the action. See Pricing.
zones
List every parking zone one RingGo operator runs, such as all of a council's on-street zones: location code, name, area and coordinates. Name the operator by operatorId or by name.
POST https://request.usestring.ai/v1/integrations/ringgo/zonesInput
Unknown fields are rejected.
| Field | Type | Description |
|---|---|---|
operator | string | Required. The operator's operatorId, such as 42152, or its name, such as Westminster City Council. A name must match one operator: the one named exactly, or the only one containing it. |
limit | integer | The most zones to return, lowest location code first; all of them when omitted. At least 0. |
Output
data is an array of rows, one per result. Each row has:
| Field | Type | Description |
|---|---|---|
zoneNumber | string | The RingGo location code on the zone's signs, which a driver enters to pay and tariffs takes. |
zoneId | string | RingGo's internal id for the zone. |
name | string | The zone's name, often its controlled parking zone and street, such as C1, Circus Road. |
location | string | The area the zone belongs to, often the parking zone and operator. |
latitude | number | null | — |
longitude | number | null | — |
operatorId | integer | — |
operatorName | string | — |
Example
curl https://request.usestring.ai/v1/integrations/ringgo/zones \
-H "Authorization: Bearer $STRING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operator": "Westminster City Council",
"limit": 3
}'data starts with these rows:
[
{
"zoneNumber": "6100",
"zoneId": "127446",
"name": "C1, Circus Road",
"location": "C1 Westminster City Council",
"latitude": 51.53357,
"longitude": -0.17249,
"operatorId": 42152,
"operatorName": "Westminster City Council"
},
{
"zoneNumber": "6101",
"zoneId": "127447",
"name": "C1, Titchfield Road",
"location": "C1 Westminster City Council",
"latitude": 51.53588,
"longitude": -0.16269,
"operatorId": 42152,
"operatorName": "Westminster City Council"
},
{
"zoneNumber": "6102",
"zoneId": "127448",
"name": "C1, Prince Albert Road",
"location": "C1 Westminster City Council",
"latitude": 51.53581,
"longitude": -0.16152,
"operatorId": 42152,
"operatorName": "Westminster City Council"
}
]Requests and billing
- Requests: 2–3 Web Access requests per call.
- Billing:
passthrough. Each request the action makes bills at its own rate on your plan; there is no separate charge for the action. See Pricing.
nearby
Find the RingGo parking zones nearest a point, nearest first: location code, name, postcode, distance, on-street or car park, spaces, live occupancy, emissions zone, vehicle restrictions, notes and operator.
POST https://request.usestring.ai/v1/integrations/ringgo/nearbyInput
Unknown fields are rejected.
| Field | Type | Description |
|---|---|---|
latitude | number | Required. Latitude of the point to search around, such as 51.5136. From -90 to 90. |
longitude | number | Required. Longitude of the point to search around, such as -0.1365. From -180 to 180. |
radiusMiles | integer | How far from the point to search, in whole miles; 1 when omitted. From 0 to 20. |
limit | integer | The most zones to return, nearest first; 100 when omitted. From 0 to 500. |
Output
data is an array of rows, one per result. Each row has:
| Field | Type | Description |
|---|---|---|
zoneNumber | string | The RingGo location code on the zone's signs, which a driver enters to pay and tariffs takes. |
zoneId | string | RingGo's internal id for the zone. |
name | string | The zone's name, often its controlled parking zone and street, such as G1, Poland Street. |
location | string | The area the zone belongs to, often the parking zone and operator. |
postcode | string | null | — |
latitude | number | null | — |
longitude | number | null | — |
distanceMiles | number | Distance from the searched point, in miles. |
zoneType | string | on-street for a street or bay, car-park for an off-street car park, other otherwise. |
spaces | integer | null | How many spaces the zone has, as RingGo lists it. |
occupancyPercent | integer | null | How full the zone is now, 0 to 100, from RingGo's live estimate; null when it has none for the zone. |
emissionsZone | string | null | The low-emission zone the zone lies in, such as London ULEZ; null when none. |
vehicleRestrictions | string[] | Vehicles the zone is for, such as ANY, Motorcycle or Coach. |
notes | string | The zone's own notes for drivers, such as a minimum stay, as plain text. |
operatorId | integer | — |
operatorName | string | — |
Example
curl https://request.usestring.ai/v1/integrations/ringgo/nearby \
-H "Authorization: Bearer $STRING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"latitude": 51.5136,
"longitude": -0.1365,
"limit": 3
}'data starts with these rows:
[
{
"zoneNumber": "8471",
"zoneId": "128565",
"name": "G1, Poland Street",
"location": "G1 Westminster City Council",
"postcode": "W1F 7NT",
"latitude": 51.51302,
"longitude": -0.13612001,
"distanceMiles": 0.01012,
"zoneType": "on-street",
"spaces": 1,
"occupancyPercent": 100,
"emissionsZone": "London ULEZ",
"vehicleRestrictions": ["ANY"],
"notes": "A minimum purchase of 10 minutes applies at this location. If selecting 1-9 minutes you will be allocated and charged for the minimum purchase. From 1 Oct 2025 a convenience fee will apply. Please see prices for further info.",
"operatorId": 42152,
"operatorName": "Westminster City Council"
},
{
"zoneNumber": "8469",
"zoneId": "128563",
"name": "G1, Broadwick Street",
"location": "G1 Westminster City Council",
"postcode": "W1F 8JB",
"latitude": 51.513538,
"longitude": -0.13609999,
"distanceMiles": 0.01523,
"zoneType": "on-street",
"spaces": 4,
"occupancyPercent": 50,
"emissionsZone": "London ULEZ",
"vehicleRestrictions": ["ANY"],
"notes": "A minimum purchase of 10 minutes applies at this location. If selecting 1-9 minutes you will be allocated and charged for the minimum purchase. From 1 Oct 2025 a convenience fee will apply. Please see prices for further info.",
"operatorId": 42152,
"operatorName": "Westminster City Council"
},
{
"zoneNumber": "8468",
"zoneId": "128562",
"name": "G1, Berwick Street",
"location": "G1 Westminster City Council",
"postcode": "W1F 8AR",
"latitude": 51.514469,
"longitude": -0.13572,
"distanceMiles": 0.05714,
"zoneType": "on-street",
"spaces": 4,
"occupancyPercent": 100,
"emissionsZone": "London ULEZ",
"vehicleRestrictions": ["ANY"],
"notes": "A minimum purchase of 10 minutes applies at this location. If selecting 1-9 minutes you will be allocated and charged for the minimum purchase. From 1 Oct 2025 a convenience fee will apply. Please see prices for further info.",
"operatorId": 42152,
"operatorName": "Westminster City Council"
}
]Requests and billing
- Requests: 2 Web Access requests per call.
- Billing:
passthrough. Each request the action makes bills at its own rate on your plan; there is no separate charge for the action. See Pricing.
tariffs
Read the prices for RingGo parking zones by location code: each zone's tariffs by day and time of day, RingGo's fees on top, minimum and maximum stay, and the operator's pricing notes.
POST https://request.usestring.ai/v1/integrations/ringgo/tariffsInput
Unknown fields are rejected.
| Field | Type | Description |
|---|---|---|
zones | string[] | null | Required. RingGo location codes, the number on a zone's signs, such as 6100. At least 1 entry. |
Output
data is an array of rows, one per result. Each row has:
| Field | Type | Description |
|---|---|---|
zoneNumber | string | The RingGo location code these prices are for. |
tariffs | object[] | The prices by the days they apply on, as the zone's tariff board lists them. |
tariffs[].validity | string | The days the prices apply on, such as Monday to Friday or Bank Holiday. |
tariffs[].periods | object[] | null | — |
tariffs[].periods[].times | string | The time window, such as 8:30am - 6:30pm; empty when the prices cover the whole day. |
tariffs[].periods[].prices | object[] | null | — |
tariffs[].periods[].prices[].duration | string | The stay it prices, such as 1 Hour or For every 10 Minutes. |
tariffs[].periods[].prices[].price | string | The price as RingGo shows it, in pounds, such as 2.16, 0.36 (0.03) or Free. |
tariffs[].periods[].prices[].vehicleRestrictions | string[] | null | Vehicles this price is limited to; empty when it applies to all. |
tariffs[].periods[].prices[].fuelTypeRestrictions | string[] | null | Fuel types this price is limited to; empty when it applies to all. |
fees | object[] | RingGo's charges on top of the parking price, such as its convenience fee and SMS reminders. |
fees[].name | string | — |
fees[].value | string | — |
restrictions | object[] | The zone's stay rules, such as Minimum Stay and Maximum Stay. |
restrictions[].name | string | — |
restrictions[].value | string | — |
notes | string | The operator's notes on the prices, such as emissions-based charging, as plain text. |
lastUpdated | string | null | When RingGo last changed the zone's prices, as an ISO 8601 date. |
Example
curl https://request.usestring.ai/v1/integrations/ringgo/tariffs \
-H "Authorization: Bearer $STRING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"zones": ["6100"]
}'data starts with these rows:
[
{
"zoneNumber": "6100",
"tariffs": [
{
"validity": "Monday to Friday",
"periods": [
{
"times": "8:30am - 6:30pm",
"prices": [
{
"duration": "For every 10 Minutes",
"price": "0.36 (0.03)",
"vehicleRestrictions": [],
"fuelTypeRestrictions": []
},
{
"duration": "1 Hour",
"price": "2.16",
"vehicleRestrictions": [],
"fuelTypeRestrictions": []
}
]
}
]
},
{
"validity": "Bank Holiday",
"periods": [
{
"times": "",
"prices": [
{
"duration": "24 Hours",
"price": "Free",
"vehicleRestrictions": [],
"fuelTypeRestrictions": []
}
]
}
]
}
],
"fees": [
{
"name": "Convenience Fee",
"value": "30p"
},
{
"name": "SMS reminder charge",
"value": "20p"
},
{
"name": "SMS summary charge",
"value": "20p"
}
],
"restrictions": [
{
"name": "Minimum Stay",
"value": "10 min"
},
{
"name": "Maximum Stay",
"value": "30 Minutes"
},
{
"name": "Extendable",
"value": "Up to Maximum stay"
}
],
"notes": "Westminster Council now operates an emissions-based charging scheme. The price to pay will be adjusted based on the CO2 output and fuel type of your vehicle, see https://www.westminster.gov.uk/parking-prices for details. You will be quoted the adjusted charge before you commit to pay. EV/PHEV drivers - the 10 mins/max stay concession no longer applies. You must now purchase the full duration of your parking session From 1 Oct 2025 a convenience fee will apply. Please see prices for further info.",
"lastUpdated": "2026-02-24"
}
]Requests and billing
- Requests: 1 Web Access request per entry in
items, plus up to 1 setup request per call. - Billing:
passthrough. Each request the action makes bills at its own rate on your plan; there is no separate charge for the action. See Pricing.