Unpacking data from Unified API


#1

Hi all

I am new to the use of the API and hoping someone can help me with some basics. I have been unable to see any data, but have been able to get ‘Response 200’ from various URLs, so I assume I am doing something right. However when I try to view this data I get errors.

So i am using the approach in Python as below (with my own app id and key). This approach works with other APIs. Per above, I do get the ‘Response 200’ through. But also:

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

import json
import requests

url = ‘https://api.tfl.gov.uk/swagger/ui/index.html?url=/swagger/docs/v1#!/BikePoint/BikePoint_GetAll?app_id=22222?app_key=abcd
response = requests.get(url)
data = response.json()

Is there something else i need to do?

Thanks,
Paul


#2

Paul:

One thing I’ve found useful for learning is to paste the URL you are testing into the address bar of firefox, which shows the response broken down like this:

To do this you need a firefox addon which you can see at https://jsonview.com/

Firefox then allows you to expand and contract each node so that you can verify the structure and format of the data being returned.

I can’t help you with decoding it with python, but in javascript it’s fairly simple once you have an object o containing the json result:

o.mode would give you an array of modes (in this case, with a single value of “tube”)

o.lines[0].name would return the (first and only) name of “Picadilly”


#3

Thanks Harry.

I’ve managed to get data through, but without using my API credentials.

What is the format for adding the credentials to the URL? (sorry I cannot find this anywhere).

I’ve tried appending ‘?app_key=121212?app_id=123abcd’ but to no avail.

Paul

url = ‘https://api.tfl.gov.uk/BikePoint
response = requests.get(url)
data = response.json()
data


#4

Paul,

I may be wrong but I think you want “https://api.tfl.gov.uk/BikePoint?app_id=2222&app_key=abcd

Simon


#5

Thanks Simon - that worked, I’m up and running now.