# API from SkyScanner for Examples:
url = "<https://skyscanner65.p.rapidapi.com/api/v1/flights/indicative/search>"
payload = { "query": {
"market": "US",
"locale": "en-US",
"currency": "USD",
"queryLegs": [
{
"originPlace": { "queryPlace": { "iata": "BOM" } },
"destinationPlace": { "queryPlace": { "iata": "DEL" } },
"anytime": True
}
]
} }
headers = {
"content-type": "application/json",
"X-RapidAPI-Key": "81d929c401msh55db1148647344cp1f1e2djsnd3e37a9caf26",
"X-RapidAPI-Host": "skyscanner65.p.rapidapi.com"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
#Checking which type of output we have, a dictionary has keys values
type(response.json())
output = response.json()
output.keys()
output['status']
output['content']
output['content'].keys()
results = output['content']['results']
results.keys()
quotes = results['quotes']
# this function takes a dictionary and transform into a pandas dataframe
quotes_data = pd.json_normalize(quotes)
# Clean the column names
quotes_data.columns = [col.split('.')[-1] for col in quotes_data.columns]
list(quotes_data.columns)
# Flatten Dictionary Function
def flatten_dict(dd, separator='_', prefix=''):
return {f"{prefix}{separator}{k}" if prefix else k: v
for kk, vv in dd.items()
for k, v in (flatten_dict(vv, separator, kk).items() if isinstance(vv, dict) else {kk: vv}.items())}
flattened_results = [flatten_dict(result) for result in quotes.values()]
# Convert the flattened dictionary to a dataframe
quote_data = pd.DataFrame.from_records(flattened_results)