

Picture by Creator
# Introduction
The power to gather high-quality, related info remains to be a core ability for any information skilled. Whereas there are a number of methods to collect information, one of the vital highly effective and reliable strategies is thru APIs (utility programming interfaces). They function bridges, permitting totally different software program programs to speak and share information seamlessly.
On this article, we’ll break down the necessities of utilizing APIs for information assortment — why they matter, how they work, and how you can get began with them in Python.
# What’s an API?
An API (utility programming interface) is a algorithm and protocols that permits totally different software program programs to speak and change information effectively.
Consider it like eating at a restaurant. As a substitute of talking on to the chef, you place your order with a waiter. The waiter checks if the components can be found, passes the request to the kitchen, and brings your meal again as soon as it’s prepared.
An API works the identical means: it receives your request for particular information, checks if that information exists, and returns it if accessible — serving because the messenger between you and the information supply.
When utilizing an API, interactions usually contain the next parts:
- Consumer: The applying or system that sends a request to entry information or performance
- Request: The consumer sends a structured request to the server, specifying what information it wants
- Server: The system that processes the request and gives the requested information or performs an motion
- Response: The server processes the request and sends again the information or lead to a structured format, often JSON or XML


Picture by Creator
This communication permits purposes to share info or functionalities effectively, enabling duties like fetching information from a database or interacting with third-party providers.
# Why Utilizing APIs for Information Assortment?
APIs supply a number of benefits for information assortment:
- Effectivity: They supply direct entry to information, eliminating the necessity for handbook information gathering
- Actual-time Entry: APIs usually ship up-to-date info, which is important for time-sensitive analyses
- Automation: They allow automated information retrieval processes, decreasing human intervention and potential errors
- Scalability: APIs can deal with massive volumes of requests, making them appropriate for in depth information assortment duties
# Implementing API Calls in Python
Making a fundamental API name in Python is among the best and most sensible workouts to get began with information assortment. The favored requests library makes it easy to ship HTTP requests and deal with responses.
To show the way it works, we’ll use the Random Person Generator API, a free service that gives dummy consumer information in JSON format, good for testing and studying.
Right here’s a step-by-step information to creating your first API name in Python.
// Putting in the Requests Library:
// Importing the Required Libraries:
import requests
import pandas as pd
// Checking the Documentation Web page:
Earlier than making any requests, it is vital to grasp how the API works. This contains reviewing accessible endpoints, parameters, and response construction. Begin by visiting the Random Person API documentation.
// Defining the API Endpoint and Parameters:
Based mostly on the documentation, we are able to assemble a easy request. On this instance, we fetch consumer information restricted to customers from the US:
url="https://randomuser.me/api/"
params = {'nat': 'us'}
// Making the GET Request:
Use the requests.get() operate with the URL and parameters:
response = requests.get(url, params=params)
// Dealing with the Response:
Test whether or not the request was profitable, then course of the information:
if response.status_code == 200:
information = response.json()
# Course of the information as wanted
else:
print(f"Error: {response.status_code}")
// Changing Our Information right into a Dataframe:
To work with the information simply, we are able to convert it right into a pandas DataFrame:
information = response.json()
df = pd.json_normalize(information["results"])
df
Now, let’s exemplify it with an actual case.
# Working with the Eurostat API
Eurostat is the statistical workplace of the European Union. It gives high-quality, harmonized statistics on a variety of subjects equivalent to economics, demographics, atmosphere, trade, and tourism — protecting all EU member states.
By means of its API, Eurostat provides public entry to an unlimited assortment of datasets in machine-readable codecs, making it a helpful useful resource for information professionals, researchers, and builders all in favour of analyzing European-level information.
// Step 0: Understanding the Information within the API:
In the event you go verify the Information part of Eurostat, one can find a navigation tree. We will attempt to establish some information of curiosity within the following subsections:
- Detailed Datasets: Full Eurostat information in multi-dimensional format
- Chosen Datasets: Simplified datasets with fewer indicators, in 2–3 dimensions
- EU Insurance policies: Information grouped by particular EU coverage areas
- Cross-cutting: Thematic information compiled from a number of sources
// Step 1: Checking the Documentation:
At all times begin with the documentation. Yow will discover Eurostat’s API information right here. It explains the API construction, accessible endpoints, and how you can kind legitimate requests.


// Step 2: Producing the First Name Request:
To generate an API request utilizing Python, step one is putting in and importing the requests library. Keep in mind, we already put in it within the earlier easy instance. Then, we are able to simply generate a name request utilizing a demo dataset from the Eurostat documentation.
# We import the requests library
import requests
# Outline the URL endpoint -> We use the demo URL within the EUROSTATS API documentation.
url = "https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/information/DEMO_R_D3DENS?lang=EN"
# Make the GET request
response = requests.get(url)
# Print the standing code and response information
print(f"Standing Code: {response.status_code}")
print(response.json()) # Print the JSON response
Professional tip: We will cut up the URL into the bottom URL and parameters to make it simpler to perceive what information we are requesting from the API.
# We import the requests library
import requests
# Outline the URL endpoint -> We use the demo URL within the EUROSTATS API documentation.
url = "https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/information/DEMO_R_D3DENS"
# Outline the parameters -> We outline the parameters so as to add within the URL.
params = {
'lang': 'EN' # Specify the language as English
}
# Make the GET request
response = requests.get(url, params=params)
# Print the standing code and response information
print(f"Standing Code: {response.status_code}")
print(response.json()) # Print the JSON response
// Step 3: Figuring out Which Dataset to Name:
As a substitute of utilizing the demo dataset, you’ll be able to choose any dataset from the Eurostat database. For instance, let’s question the dataset TOUR_OCC_ARN2, which accommodates tourism lodging information.
# We import the requests library
import requests
# Outline the URL endpoint -> We use the demo URL within the EUROSTATS API documentation.
base_url = "https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/information/"
dataset = "TOUR_OCC_ARN2"
url = base_url + dataset
# Outline the parameters -> We outline the parameters so as to add within the URL.
params = {
'lang': 'EN' # Specify the language as English
}
# Make the GET request -> we generate the request and acquire the response
response = requests.get(url, params=params)
# Print the standing code and response information
print(f"Standing Code: {response.status_code}")
print(response.json()) # Print the JSON response
// Step 4: Understanding the Response
Eurostat’s API returns information in JSON-stat format, an ordinary for multidimensional statistical information. It can save you the response to a file and discover its construction:
import requests
import json
# Outline the URL endpoint and dataset
base_url = "https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/information/"
dataset = "TOUR_OCC_ARN2"
url = base_url + dataset
# Outline the parameters so as to add within the URL
params = {
'lang': 'EN',
"time": 2019 # Specify the language as English
}
# Make the GET request and acquire the response
response = requests.get(url, params=params)
# Test the standing code and deal with the response
if response.status_code == 200:
# Parse the JSON response
information = response.json()
# Generate a JSON file and write the response information into it
with open("eurostat_response.json", "w") as json_file:
json.dump(information, json_file, indent=4) # Save JSON with fairly formatting
print("JSON file 'eurostat_response.json' has been efficiently created.")
else:
print(f"Error: Acquired standing code {response.status_code} from the API.")
// Step 5: Remodeling the Response into Usable Information:
Now that we bought the information, we are able to discover a means to put it aside right into a tabular format (CSV) to easy the method of analyzing it.
import requests
import pandas as pd
# Step 1: Make the GET request to the Eurostat API
base_url = "https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/information/"
dataset = "TOUR_OCC_ARN2" # Vacationer lodging statistics dataset
url = base_url + dataset
params = {'lang': 'EN'} # Request information in English
# Make the API request
response = requests.get(url, params=params)
# Step 2: Test if the request was profitable
if response.status_code == 200:
information = response.json()
# Step 3: Extract the scale and metadata
dimensions = information['dimension']
dimension_order = information['id'] # ['geo', 'time', 'unit', 'indic', etc.]
# Extract labels for every dimension dynamically
dimension_labels = {dim: dimensions[dim]['category']['label'] for dim in dimension_order}
# Step 4: Decide the scale of every dimension
dimension_sizes = {dim: len(dimensions[dim]['category']['index']) for dim in dimension_order}
# Step 5: Create a mapping for every index to its respective label
# For instance, if we've 'geo', 'time', 'unit', and 'indic', map every index to the proper label
index_labels = {
dim: listing(dimension_labels[dim].keys())
for dim in dimension_order
}
# Step 6: Create an inventory of rows for the CSV
rows = []
for key, worth in information['value'].gadgets():
# `key` is a string like '123', we have to break it down into the corresponding labels
index = int(key) # Convert string index to integer
# Calculate the indices for every dimension
indices = {}
for dim in reversed(dimension_order):
dim_index = index % dimension_sizes[dim]
indices[dim] = index_labels[dim][dim_index]
index //= dimension_sizes[dim]
# Assemble a row with labels from all dimensions
row = {f"{dim.capitalize()} Code": indices[dim] for dim in dimension_order}
row.replace({f"{dim.capitalize()} Title": dimension_labels[dim][indices[dim]] for dim in dimension_order})
row["Value (Tourist Accommodations)"] = worth
rows.append(row)
# Step 7: Create a DataFrame and put it aside as CSV
if rows:
df = pd.DataFrame(rows)
csv_filename = "eurostat_tourist_accommodation.csv"
df.to_csv(csv_filename, index=False)
print(f"CSV file '{csv_filename}' has been efficiently created.")
else:
print("No legitimate information to avoid wasting as CSV.")
else:
print(f"Error: Acquired standing code {response.status_code} from the API.")
// Step 6: Producing a Particular View
Think about we simply need to preserve these information akin to Campings, Flats or Inns. We will generate a last desk with this situation, and acquire a pandas DataFrame we are able to work with.
# Test the distinctive values within the 'Nace_r2 Title' column
set(df["Nace_r2 Name"])
# Record of choices to filter
choices = ['Camping grounds, recreational vehicle parks and trailer parks',
'Holiday and other short-stay accommodation',
'Hotels and similar accommodation']
# Filter the DataFrame primarily based on whether or not the 'Nace_r2 Title' column values are within the choices listing
df = df[df["Nace_r2 Name"].isin(choices)]
df
# Finest Practices When Working with APIs
- Learn the Docs: At all times verify the official API documentation to grasp endpoints and parameters
- Deal with Errors: Use conditionals and logging to gracefully deal with failed requests
- Respect Charge Limits: Keep away from overwhelming the server — verify if fee limits apply
- Safe Credentials: If the API requires authentication, by no means expose your API keys in public code
# Wrapping Up
Eurostat’s API is a robust gateway to a wealth of structured, high-quality European statistics. By studying how you can navigate its construction, question datasets, and interpret responses, you’ll be able to automate entry to important information for evaluation, analysis, or decision-making — proper out of your Python scripts.
You may go verify the corresponding code in my GitHub repository My-Articles-Pleasant-Hyperlinks
Josep Ferrer is an analytics engineer from Barcelona. He graduated in physics engineering and is at present working within the information science discipline utilized to human mobility. He’s a part-time content material creator targeted on information science and know-how. Josep writes on all issues AI, protecting the appliance of the continuing explosion within the discipline.
