String docs
Site integrations

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
ActionDescriptionListed price
operatorsFind 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
zonesList 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
nearbyFind 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
tariffsRead 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/operators

Input

Unknown fields are rejected.

FieldTypeDescription
querystringRequired. 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:

FieldTypeDescription
operatorIdintegerThe operator's RingGo id, which zones takes.
namestring—

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/zones

Input

Unknown fields are rejected.

FieldTypeDescription
operatorstringRequired. 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.
limitintegerThe 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:

FieldTypeDescription
zoneNumberstringThe RingGo location code on the zone's signs, which a driver enters to pay and tariffs takes.
zoneIdstringRingGo's internal id for the zone.
namestringThe zone's name, often its controlled parking zone and street, such as C1, Circus Road.
locationstringThe area the zone belongs to, often the parking zone and operator.
latitudenumber | null—
longitudenumber | null—
operatorIdinteger—
operatorNamestring—

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/nearby

Input

Unknown fields are rejected.

FieldTypeDescription
latitudenumberRequired. Latitude of the point to search around, such as 51.5136. From -90 to 90.
longitudenumberRequired. Longitude of the point to search around, such as -0.1365. From -180 to 180.
radiusMilesintegerHow far from the point to search, in whole miles; 1 when omitted. From 0 to 20.
limitintegerThe 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:

FieldTypeDescription
zoneNumberstringThe RingGo location code on the zone's signs, which a driver enters to pay and tariffs takes.
zoneIdstringRingGo's internal id for the zone.
namestringThe zone's name, often its controlled parking zone and street, such as G1, Poland Street.
locationstringThe area the zone belongs to, often the parking zone and operator.
postcodestring | null—
latitudenumber | null—
longitudenumber | null—
distanceMilesnumberDistance from the searched point, in miles.
zoneTypestringon-street for a street or bay, car-park for an off-street car park, other otherwise.
spacesinteger | nullHow many spaces the zone has, as RingGo lists it.
occupancyPercentinteger | nullHow full the zone is now, 0 to 100, from RingGo's live estimate; null when it has none for the zone.
emissionsZonestring | nullThe low-emission zone the zone lies in, such as London ULEZ; null when none.
vehicleRestrictionsstring[]Vehicles the zone is for, such as ANY, Motorcycle or Coach.
notesstringThe zone's own notes for drivers, such as a minimum stay, as plain text.
operatorIdinteger—
operatorNamestring—

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/tariffs

Input

Unknown fields are rejected.

FieldTypeDescription
zonesstring[] | nullRequired. 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:

FieldTypeDescription
zoneNumberstringThe RingGo location code these prices are for.
tariffsobject[]The prices by the days they apply on, as the zone's tariff board lists them.
tariffs[].validitystringThe days the prices apply on, such as Monday to Friday or Bank Holiday.
tariffs[].periodsobject[] | null—
tariffs[].periods[].timesstringThe time window, such as 8:30am - 6:30pm; empty when the prices cover the whole day.
tariffs[].periods[].pricesobject[] | null—
tariffs[].periods[].prices[].durationstringThe stay it prices, such as 1 Hour or For every 10 Minutes.
tariffs[].periods[].prices[].pricestringThe price as RingGo shows it, in pounds, such as 2.16, 0.36 (0.03) or Free.
tariffs[].periods[].prices[].vehicleRestrictionsstring[] | nullVehicles this price is limited to; empty when it applies to all.
tariffs[].periods[].prices[].fuelTypeRestrictionsstring[] | nullFuel types this price is limited to; empty when it applies to all.
feesobject[]RingGo's charges on top of the parking price, such as its convenience fee and SMS reminders.
fees[].namestring—
fees[].valuestring—
restrictionsobject[]The zone's stay rules, such as Minimum Stay and Maximum Stay.
restrictions[].namestring—
restrictions[].valuestring—
notesstringThe operator's notes on the prices, such as emissions-based charging, as plain text.
lastUpdatedstring | nullWhen 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.