Motivation¶
The ECO Platform API helps developers access high-quality and standardized Environmental Product Declaration (EPD) data easily. As the construction industry shifts toward low-carbon solutions and resource efficiency, having reliable and scientifically verified data is crucial for life cycle assessment (LCA) modeling, making sustainable choices, and meeting regulations.
ECO Platform connects EPD program operators, manufacturers, and sustainability experts to provide consistent, trustworthy, and clear environmental data. This API integrates smoothly into your LCA processes, allowing for automation, data analysis, and new sustainability applications.
By using the ECO Platform API, you can:
- Access standardized EPD data for precise environmental impact evaluations.
- Automate LCA calculations and connect with current sustainability tools.
- Ensure compliance with global sustainability standards.
- Increase transparency in construction and green building projects.
This documentation will help you with authenticating, retrieving, and processing EPD data, providing real examples to assist you in efficiently integrating the API into your workflows.
Target Audience¶
This documentation is for developers and professionals familiar with HTTP APIs, and well-versed in LCA and EPD data (helps if you have seen some python code before).
We also assume that you:
✅ Have Python set up (Setup guide)
✅ Have an ECO Platform API key (Get your key here)
API Structure¶
The soda4LCA API follows this URL structure:
url
<BASE_URL>/resource/<ENDPOINT>?<QUERY_PARAMETERS>
The Authorization token needs to be includes in the request headers.
Let's get started with a very simple use case.
Listing All EPD datasets¶
Note: You may find multiple EPD datasets for the same EPD number. This is the case if an EPD covers multiple distinct products or product variants, where separate LCIA results are given for each individual product, in which case one digital dataset will have been generated per individual product or product variant.
Let's list five EPD datasets using the API.
Query Parameters Documentation¶
- The documentation for general
QUERY_PARAMETERS
can be found here. - The
QUERY_PARAMETERS
specific to process datasets are documented here.
Querying the /processes Endpoint¶
You need to set the query parameters to:
{
"search": true,
"distributed": true,
"virtual": true,
"metaDataOnly": false,
"validUntil": 2025,
"pageSize": 5,
"startIndex": 0,
"format": "JSON"
}
Parameter Descriptions
- search: Enables search functionality.
- distributed: Includes distributed datasets.
- virtual: Includes virtual datasets.
- metaDataOnly: If
true
, datasets that only carry metadata and a PDF (stubs) are also returned, which we are not interested in. - validUntil: Filters results by validity year.
- pageSize: Limits the number of results per request.
- startIndex: Defines the starting point for pagination.
- format: Specifies the output format (e.g., JSON).
Constructing the URL¶
Using these parameters, the request URL looks like this:
url
https://data.eco-platform.org/resource/processes?search=true&distributed=true&virtual=true&metaDataOnly=false&validUntil=2025&pageSize=5&startIndex=0&format=JSON
then copy the URL to the browser and see if it works!
Some free Environmental Product Declarations (EPDs) can be viewed without registration. However, to access the full set of capabilities that the ECO Platform has to offer, you must register and obtain an Authorization token.
Making a Request with curl
¶
You can retrieve the data using curl
:
curl "https://data.eco-platform.org/resource/processes?search=true&distributed=true&virtual=true&metaDataOnly=false&validUntil=2025&pageSize=5&startIndex=0&format=JSON"
If the request is successful, the output will display the retrieved data.
Adding an Authorization Token¶
To access restricted resources, you need to include an Authorization token. We recommend storing it in an .env
file or saving it securely.
Verify if the Token is Set
on linux or mac
echo $TOKEN
on windows cmd
cmd
echo %TOKEN%
on windows powershell
$env:TOKEN
If you don't see your token, replace $TOKEN
in the following command with your actual token.
Making an Authorized Request
curl -H "Authorization: Bearer $TOKEN" "https://data.eco-platform.org/resource/processes?search=true&distributed=true&virtual=true&metaDataOnly=false&validUntil=2025&pageSize=5&startIndex=0&format=JSON"
This should return the same output but now includes access to restricted resources.
Making the Request in Python¶
Let's see how to perform the same request using Python.
for the we need some dependencies
!pip install pandoc requests dotenv
Requirement already satisfied: pandoc in ./py_env/lib/python3.12/site-packages (2.4) Requirement already satisfied: requests in ./py_env/lib/python3.12/site-packages (2.32.4) Requirement already satisfied: dotenv in ./py_env/lib/python3.12/site-packages (0.9.9) Requirement already satisfied: plumbum in ./py_env/lib/python3.12/site-packages (from pandoc) (1.9.0) Requirement already satisfied: ply in ./py_env/lib/python3.12/site-packages (from pandoc) (3.11) Requirement already satisfied: charset_normalizer<4,>=2 in ./py_env/lib/python3.12/site-packages (from requests) (3.4.2) Requirement already satisfied: idna<4,>=2.5 in ./py_env/lib/python3.12/site-packages (from requests) (3.10) Requirement already satisfied: urllib3<3,>=1.21.1 in ./py_env/lib/python3.12/site-packages (from requests) (2.5.0) Requirement already satisfied: certifi>=2017.4.17 in ./py_env/lib/python3.12/site-packages (from requests) (2025.7.14) Requirement already satisfied: python-dotenv in ./py_env/lib/python3.12/site-packages (from dotenv) (1.1.1)
Load the Token into Python
# past you token here
TOKEN = "CHANGE ME TO THE TOKEN"
# or load form env
if TOKEN.startswith("CHANGE"):
import os
from dotenv import load_dotenv
load_dotenv()
# load the Access Token
TOKEN = os.getenv('TOKEN')
# Verify token is set
if not TOKEN:
raise Exception("Error: TOKEN is not set. Please set the TOKEN variable.")
And now, we will make the same request with Python that we previously made with curl
.
import json
import requests
import pandas as pd
# Base URL form the ECO Platform
BASE_URL = 'https://data.eco-platform.org/resource/'
# Endpoint for processes
PROCESS_ENDPOINT = 'processes'
# Query parameters
params = {
'search': True,
'distributed': True,
'virtual': True,
'metaDataOnly': False,
'validUntil': 2025,
'pageSize': 5,
'startIndex': 0,
'format': 'JSON',
}
headers = {
'Authorization': f'Bearer {TOKEN}'
}
response = requests.get(f'{BASE_URL}{PROCESS_ENDPOINT}', headers=headers, params=params)
response.raise_for_status()
df = pd.DataFrame(response.json()["data"])
df
languages | name | uuid | version | geo | classific | classificId | classificSystem | type | refYear | validUntil | compliance | subType | dataSources | regNo | regAuthority | nodeid | uri | dsType | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | [en, da] | \nSea sand 0/4 mm class E and bottom protectio... | 6461e233-b1c2-4a39-922a-4a020732e2b4 | 00.01.000 | RER | Mineralische Baustoffe / Zuschläge / Sand und ... | 1.2.01 | OEKOBAU.DAT | EPD | 2025 | 2030 | [{'name': 'EN 15804+A2 (EF 3.1)', 'uuid': 'd4a... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | MD-25073-DA | {'uuid': 'c7d370ee-2ab8-4b17-ba04-df29a8e607ea'} | ECOSMDP | https://ecosmdp.eco-platform.org/resource/proc... | Process |
1 | [en] | Birsta S N2 W2 c/c 1 m | 18f4602a-6d0d-46ff-8701-9402b8e70e6f | 00.05.001 | CN | Bygg / Stål-, aluminiumskonstruksjoner | 992467c5-eec4-4d69-88ba-672f1a896481 | EPDNorge | EPD | 2024 | 2029 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-6941-6333-EN | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
2 | [en] | Durasein Solid Surface | e26d3411-373a-4cdd-af82-08db7e36184f | 07.01.065 | GLO | Construction products, Infrastructure & buildings | 0 | The International EPD System | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2 (EF 3.0)', 'uuid': 'c00... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | EPD-IES-0007415:004 (S-P-07415) | {'uuid': '5e09bd06-11a1-4292-a56b-47898ad6a691'} | ENVIRONDEC | https://data.environdec.com/resource/datastock... | Process |
3 | [no] | NaN | ac58a83c-e898-4505-9d93-9c5b4e3e852f | 00.04.000 | NO | Bygg / Betongvarer | f107d200-244c-4c4b-9a14-0c2264316bc2 | EPDNorge | EPD | 2024 | 2029 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-8487-8141-NO | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
4 | [no] | NaN | 10eba8d0-fcd6-4c80-9227-69de52a68740 | 00.03.000 | IT | Bygg / Stål-, aluminiumskonstruksjoner | 992467c5-eec4-4d69-88ba-672f1a896481 | EPDNorge | EPD | 2025 | 2030 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | generic dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-8650-8317 | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
# Base URL for the ECO Platform data aggregator
BASE_URL = 'https://data.eco-platform.org/resource/'
# API endpoint for fetching EPD datasets
PROCESS_ENDPOINT = 'processes'
# Query parameters for filtering concrete data
query_params = {
'search': 'true',
'distributed': 'true',
'virtual': 'true',
'metaDataOnly': 'false',
'validUntil': '2025',
'pageSize': 5,
'startIndex': 0,
'format': 'JSON',
}
headers = {
'Authorization': f'Bearer {TOKEN}'
}
# Specify the name of the concrete mix to search for
query_params["name"] = "Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Mix number DA4234-DHFS Version 1"
# Send GET request to fetch relevant concrete data
response = requests.get(f'{BASE_URL}{PROCESS_ENDPOINT}', headers=headers, params=query_params)
response.raise_for_status()
# Convert response data into a structured DataFrame
concrete_data_df = pd.DataFrame(response.json()["data"])
concrete_data_df
languages | name | uuid | version | geo | classific | classificSystem | type | refYear | validUntil | compliance | subType | dataSources | regNo | regAuthority | nodeid | uri | dsType | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | [de, en] | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | DE | 02 Bauprodukte / Normal- Leicht- und Porenbeto... | IBUCategories | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': '28d74cc0-db8b-4d7e-bc44-5f6d56ce0c4... | IBU-HOL-HOL-2204100-DE2023000034-1SUG001-DE | {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} | IBU_DATA | https://ibudata.lca-data.com/resource/datastoc... | Process |
1 | [de, en] | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact, M... | 0ef0451e-dbd5-4d71-b5c8-12b30d4375ba | 00.01.001 | DE | 02 Bauprodukte / Normal- Leicht- und Porenbeto... | IBUCategories | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': '28d74cc0-db8b-4d7e-bc44-5f6d56ce0c4... | IBU-HOL-HOL-2204100-DE2023000007-1SUG001-DE | {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} | IBU_DATA | https://ibudata.lca-data.com/resource/datastoc... | Process |
2 | [de, en] | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact, M... | feb05e8e-2b45-4ef4-a7da-176902b97be2 | 00.01.001 | DE | 02 Bauprodukte / Normal- Leicht- und Porenbeto... | IBUCategories | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': '28d74cc0-db8b-4d7e-bc44-5f6d56ce0c4... | IBU-HOL-HOL-2204100-DE2023000017-1SUG001-DE | {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} | IBU_DATA | https://ibudata.lca-data.com/resource/datastoc... | Process |
Step 2: Retrieve detailed Environmental Product Declaration (EPD) data¶
# URL to fetch detailed information on EPD
EPD_URL = "https://ibudata.lca-data.com/resource/processes/"
detail_params = {
"format": "JSON",
"view": "extended"
}
# Unique identifier for the selected concrete data entry
concrete_uuid = "0ebf7111-4d1d-47a9-96cd-2e969f0f96a3"
# Fetch extended details of the selected concrete mix
response = requests.get(f'{EPD_URL}{concrete_uuid}', headers=headers, params=detail_params)
response.raise_for_status()
detailed_data = response.json()
# Display available data keys for exploration
list(detailed_data.keys())
['processInformation', 'modellingAndValidation', 'administrativeInformation', 'exchanges', 'LCIAResults', 'otherAttributes', 'version']
Step 3: Extract and Print GWP (total)¶
# Access the correct LCIA (Life Cycle Impact Assessment) result, which represents GWP-Total
GWP_TOTAL_UUID = "6a37f984-a4b3-458a-a20a-64418c145fa2"
gwp_result = None
for x in detailed_data["LCIAResults"]["LCIAResult"]:
if x["referenceToLCIAMethodDataSet"]["refObjectId"] == GWP_TOTAL_UUID:
gwp_result = x
break
# Extract short description of the impact category (e.g., "GWP-total")
gwp_description = gwp_result["referenceToLCIAMethodDataSet"]["shortDescription"][0]["value"]
print(gwp_description)
# Extract unit of measurement for GWP (NOTE index 0 is always the description)
gwp_units = gwp_result["other"]["anies"]
unit_description = gwp_units[0]["value"]["shortDescription"][0]["value"]
# Calculate the total GWP value
total_gwp_value = sum(float(entry["value"]) for entry in gwp_units[1:])
print(f"\nTotal GWP: {total_gwp_value:.1f} {unit_description}")
Global Warming Potential - total (GWP-total) Total GWP: 166.2 kg CO_(2) eqv.
Step 4: For determining the Declared Unit of the EPD, retrieve reference flow property¶
# Extract relevant flow properties
flow_properties = None
for e in detailed_data["exchanges"]["exchange"]:
for fp in e["flowProperties"]:
if "referenceFlowProperty" in fp and fp["referenceFlowProperty"]:
flow_properties = e["flowProperties"]
break
# Fetch flow properties lookup table
flow_properties_url = "https://data.eco-platform.org/resource/flowproperties"
flow_properties_response = requests.get(flow_properties_url, headers=headers, params={'format': 'JSON'})
flow_properties_lookup = pd.DataFrame(flow_properties_response.json()["data"])
# Process and display flow properties
processed_flow_properties = []
for prop in flow_properties:
# Look up the property details using UUID
lookup_result = flow_properties_lookup.loc[flow_properties_lookup["uuid"] == prop["uuid"]]
# Convert lookup result to dictionary format
lookup_data = {key: list(value.values())[0] for key, value in lookup_result.to_dict().items()}
print(lookup_data["name"], prop["meanValue"], lookup_data["defUnit"])
processed_flow_properties.append({
"name": lookup_data["name"],
"value": prop["meanValue"],
"unit": lookup_data["defUnit"]
})
print("\nHas a GWP of:")
print(f"{total_gwp_value:.1f} {unit_description}")
Mass 2310.0 kg Volume 1.0 m3 Has a GWP of: 166.2 kg CO_(2) eqv.
Step 5: Calculate GWP for 1 metric ton of concrete¶
# Extract mass property for scaling calculations
mass_property = next(fp for fp in processed_flow_properties if fp["name"] == "Mass")
conversion_factor = mass_property["value"] / 1000 # Convert from kg to tons
# Compute the total GWP for 1 ton of concrete
print(f"That means 1 metric ton (1000 kg) of this concrete has a GWP of {(total_gwp_value / conversion_factor):.1f} {unit_description}")
That means 1 metric ton (1000 kg) of this concrete has a GWP of 71.9 kg CO_(2) eqv.
Simple Examples for Common Tasks¶
Here are simpler and more concise examples of how to do specific things.
# Base URL form the ECO Platform
BASE_URL = 'https://data.eco-platform.org/resource/'
# Endpoint for processes
PROCESS_ENDPOINT = 'processes'
# Query parameters
params = {
'search': True,
'distributed': True,
'virtual': True,
'metaDataOnly': False,
'validUntil': 2025,
'pageSize': 5,
'startIndex': 0,
'format': 'JSON',
}
headers = {
'Authorization': f'Bearer {TOKEN}'
}
Filter by compliance¶
This is the API documentation for it
The UUIDs for compliance are from here or below
Name | UUID |
---|---|
ILCD Format | a97a0155-0234-4b87-b4ce-a45da52f2a40 |
EPD Data Format Extensions v1.1 | cba73800-7874-11e3-981f-0800200c9a66 |
EPD Data Format Extensions v1.2 | a29449fd-aa2f-4de8-b5d7-4b06b43c6fde |
EN 15804+A1 | b00f9ec0-7874-11e3-981f-0800200c9a66 |
EN 15804+A2 (EF 3.0) | c0016b33-8cf7-415c-ac6e-deba0d21440d |
EN 15804+A2 (EF 3.1) | d4aa3ec7-b1d7-4a4a-a6cb-37af88dcc902 |
ISO 14025 | 4f2eb655-6e44-4874-a95a-e28f5442cd4d |
ISO 21930 | 9c1e8451-2321-4498-b459-b6568b6b6547 |
params["compliance"] = "c0016b33-8cf7-415c-ac6e-deba0d21440d"
res = requests.get(f'{BASE_URL}{PROCESS_ENDPOINT}', headers=headers, params=params)
res.raise_for_status()
del params["compliance"]
df = pd.DataFrame(res.json()["data"])
df
languages | name | uuid | version | geo | classific | classificId | classificSystem | type | refYear | validUntil | compliance | subType | dataSources | regNo | regAuthority | nodeid | uri | dsType | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | [en] | Birsta S N2 W2 c/c 1 m | 18f4602a-6d0d-46ff-8701-9402b8e70e6f | 00.05.001 | CN | Bygg / Stål-, aluminiumskonstruksjoner | 992467c5-eec4-4d69-88ba-672f1a896481 | EPDNorge | EPD | 2024 | 2029 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-6941-6333-EN | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
1 | [en] | Durasein Solid Surface | e26d3411-373a-4cdd-af82-08db7e36184f | 07.01.065 | GLO | Construction products, Infrastructure & buildings | 0 | The International EPD System | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2 (EF 3.0)', 'uuid': 'c00... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | EPD-IES-0007415:004 (S-P-07415) | {'uuid': '5e09bd06-11a1-4292-a56b-47898ad6a691'} | ENVIRONDEC | https://data.environdec.com/resource/datastock... | Process |
2 | [no] | NaN | ac58a83c-e898-4505-9d93-9c5b4e3e852f | 00.04.000 | NO | Bygg / Betongvarer | f107d200-244c-4c4b-9a14-0c2264316bc2 | EPDNorge | EPD | 2024 | 2029 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-8487-8141-NO | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
3 | [no] | NaN | 10eba8d0-fcd6-4c80-9227-69de52a68740 | 00.03.000 | IT | Bygg / Stål-, aluminiumskonstruksjoner | 992467c5-eec4-4d69-88ba-672f1a896481 | EPDNorge | EPD | 2025 | 2030 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | generic dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-8650-8317 | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
4 | [en] | ABb PMB, Skanska Industrial Solutions, Dalby ... | 94506cde-817c-4307-bef0-4a317b894e95 | 00.07.000 | SE | Bygg / Asfalt og pukk | 67dd3145-6d07-4939-8373-297d512803ca | EPDNorge | EPD | 2024 | 2029 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-5731-5030-EN | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
In this example, we only choose EPD datasets that comply with EN15804+A2 EF 3.0
.
Filter by Background Database¶
In ECO Portal, there are mainly two types of background database being used - ecoinvent database and Sphera MLC (f.k.a. GaBi database). These are identified by distinct UUIDs for which we can filter.
While the database itself is represented by a source dataset with a specific UUID (e.g. the ecoinvent database as b497a91f-e14b-4b69-8f28-f50eb1576766
), there exist additional source datasets with their own UUIDs for the individual versions (e.g. for ecoinvent 3.10 6edab576-5247-472f-a2f4-0cb84561ca8b
). The former is mandatory and the latter is optional.
1. GaBi¶
GaBi Database Version | Name | UUID |
---|---|---|
all | GaBi Database (general) | 28d74cc0-db8b-4d7e-bc44-5f6d56ce0c4a |
SP20 2013 | GaBi database SP20 2013 | b9fdf525-e9b8-47a0-b897-2ecfe7e2cff5 |
SP25 2014 | GaBi database SP25 2014 | 04536297-8f33-4ef0-b06c-54dc273c2aaa |
SP26 2014 | GaBi database SP26 2014 | 7d81b748-d7ea-4efd-b72e-205c69306f38 |
SP27 2015 | GaBi database SP27 2015 | 9422129a-7992-4eaf-aa17-0fca36af4512 |
SP28 2015 | GaBi database SP28 2015 | 176effc6-2e73-4419-be24-60b3399e91cf |
SP29 2016 | GaBi database SP29 2016 | 8cb50bdc-0299-4a4c-9a4e-4c62917018c7 |
SP30 2016 | GaBi database SP30 2016 | 6985fea4-15ea-4b96-9237-c67ee3a1f28c |
SP33 2017 | GaBi database SP33 2017 | d8181616-4417-4dbd-9614-09937353f17a |
SP34 2017 | GaBi database SP34 2017 | 07650073-f65e-4d07-97e9-359a58b7299e |
SP35 2018 | GaBi database SP35 2018 | feda7597-12a1-4bd5-93ef-4d8120877b78 |
SP36 2018 | GaBi database SP36 2018 | dad5023c-8d97-4656-b82a-2fc6480b33a7 |
SP37 2019 | GaBi database SP37 2019 | aaef5d83-7fd3-424f-86c6-00f51cd39845 |
SP38 2019 | GaBi database SP38 2019 | 4467e22f-78e4-4e21-ae4a-b8ffeda7d795 |
SP39 2019 | GaBi database SP39 2019 | 07d9b8a7-e0fc-408f-a95e-c90735f843ce |
SP40 2020 | GaBi database SP40 2020 | 0115289e-52f0-4920-bc7e-57b1c96aec8d |
Edition 2020, CUP 2020.02 | GaBi Database Edition 2020, CUP 2020.02 | 4b368ada-d799-4afc-9d41-f371f2b23781 |
Edition 2021, CUP 2021.01 | GaBi Database Edition 2021, CUP 2021.01 | 1cece811-7501-44d4-8067-9259bd5cb835 |
Edition 2021, CUP 2021.02 | GaBi Database Edition 2021, CUP 2021.02 | 90321ffe-9ebb-4946-886c-338efe6fbf26 |
Edition 2022, CUP 2022.01 | GaBi Database Edition 2022, CUP 2022.01 | 86f664e2-7dab-4722-aad7-4c5206a4123b |
Edition 2022, CUP 2022.02 | GaBi Database Edition 2022, CUP 2022.02 | 94f442cb-662e-43ea-a792-4b0a35132e93 |
CUP 2023.01 | Sphera MLC (fka GaBi) CUP 2023.01 | 6bcd5bfa-3623-48ab-a52b-6d5be8db82ed |
CUP 2023.02 | Sphera MLC (fka GaBi) CUP 2023.02 | cb600d3b-e85a-42b3-b059-5591e2757fbb |
Edition 2025 | Sphera MLC (fka GaBi) Databases Edition 2025 | 7443b962-0446-4d69-8aa7-8055a6b1614a |
2. ecoinvent¶
ecoinvent Database Version | Name | UUID |
---|---|---|
all | ecoinvent database (general) | b497a91f-e14b-4b69-8f28-f50eb1576766 |
2.0 | ecoinvent 2.0 database | 67e57f6b-53d2-4adb-a5db-7e8157ce5865 |
2.1 | ecoinvent 2.1 database | dd4ba261-1847-4d00-a9c0-7e81a3402dae |
2.2 | ecoinvent 2.2 database | 9ffadc15-4649-4871-b565-cee8197b17e9 |
3.0 | ecoinvent 3.0 database | ae9fac17-61c1-4776-947a-0fc2865954ff |
3.1 | ecoinvent 3.1 database | 44df4cc3-a75f-4e13-a37a-971dadc97b35 |
3.2 | ecoinvent 3.2 database | d82a6cdc-1930-4a8a-9b07-2f7fda03fcbd |
3.3 | ecoinvent 3.3 database | c667cc42-12a7-4d92-9d7b-5e4e90a7a274 |
3.4 | ecoinvent 3.4 database | db59e0c6-db9a-4d9a-8637-67b8ed42415c |
3.5 | ecoinvent 3.5 database | ca0da4f4-c837-4005-9c17-e77b9bd09d8b |
3.6 | ecoinvent 3.6 database | 766b9973-5ee8-48a2-8098-72c8e20b369f |
3.7 | ecoinvent 3.7 database | de2729d9-235e-4588-8dd0-dba6a1d1f2e1 |
3.7.1 | ecoinvent 3.7.1 database | 3a4d6cdd-46ad-4ff3-8452-a0323e94f789 |
3.8 | ecoinvent 3.8 database | 0f4c65c0-6210-450f-b886-82bf8dd5ace9 |
3.9 | ecoinvent 3.9 database | c6825ce7-2951-4e1e-8634-426c7af4679b |
3.9.1 | ecoinvent 3.9.1 database | e2034c8f-9d74-46f2-8fce-1f0c5c5cebeb |
3.10 | ecoinvent 3.10 database | 6edab576-5247-472f-a2f4-0cb84561ca8b |
This is the API documentation for it
The filtering can also be negated. The following code will filter for everything that does not declare GaBi as a background database:
params["dataSource"] = "28d74cc0-db8b-4d7e-bc44-5f6d56ce0c4a"
params["dataSourceMode"] = "NOT"
res = requests.get(f'{BASE_URL}{PROCESS_ENDPOINT}', headers=headers, params=params)
res.raise_for_status()
del params['dataSource']
del params["dataSourceMode"]
df = pd.DataFrame(res.json()["data"])
df
languages | name | uuid | version | geo | classific | classificId | classificSystem | type | refYear | validUntil | compliance | subType | dataSources | regNo | regAuthority | nodeid | uri | dsType | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | [en, da] | \nSea sand 0/4 mm class E and bottom protectio... | 6461e233-b1c2-4a39-922a-4a020732e2b4 | 00.01.000 | RER | Mineralische Baustoffe / Zuschläge / Sand und ... | 1.2.01 | OEKOBAU.DAT | EPD | 2025 | 2030 | [{'name': 'EN 15804+A2 (EF 3.1)', 'uuid': 'd4a... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | MD-25073-DA | {'uuid': 'c7d370ee-2ab8-4b17-ba04-df29a8e607ea'} | ECOSMDP | https://ecosmdp.eco-platform.org/resource/proc... | Process |
1 | [en] | Birsta S N2 W2 c/c 1 m | 18f4602a-6d0d-46ff-8701-9402b8e70e6f | 00.05.001 | CN | Bygg / Stål-, aluminiumskonstruksjoner | 992467c5-eec4-4d69-88ba-672f1a896481 | EPDNorge | EPD | 2024 | 2029 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-6941-6333-EN | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
2 | [en] | Durasein Solid Surface | e26d3411-373a-4cdd-af82-08db7e36184f | 07.01.065 | GLO | Construction products, Infrastructure & buildings | 0 | The International EPD System | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2 (EF 3.0)', 'uuid': 'c00... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | EPD-IES-0007415:004 (S-P-07415) | {'uuid': '5e09bd06-11a1-4292-a56b-47898ad6a691'} | ENVIRONDEC | https://data.environdec.com/resource/datastock... | Process |
3 | [no] | NaN | ac58a83c-e898-4505-9d93-9c5b4e3e852f | 00.04.000 | NO | Bygg / Betongvarer | f107d200-244c-4c4b-9a14-0c2264316bc2 | EPDNorge | EPD | 2024 | 2029 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-8487-8141-NO | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
4 | [no] | NaN | 10eba8d0-fcd6-4c80-9227-69de52a68740 | 00.03.000 | IT | Bygg / Stål-, aluminiumskonstruksjoner | 992467c5-eec4-4d69-88ba-672f1a896481 | EPDNorge | EPD | 2025 | 2030 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | generic dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | NEPD-8650-8317 | {'uuid': '7008caa3-6fea-4ad2-81eb-f2b7a0610e6c'} | EPD-NORWAY_DIGI | https://epdnorway.lca-data.com/resource/datast... | Process |
Filter by EPD Numbers¶
Each EPD has a unique declaration number (in the data format, it is called registration number) which we can also use as a filter criterion, even a partial EPD number:
params["registrationNumber"] = "IBU-HOL-HOL-2204100"
res = requests.get(f'{BASE_URL}{PROCESS_ENDPOINT}', headers=headers, params=params)
res.raise_for_status()
del params['registrationNumber']
df = pd.DataFrame(res.json()["data"])
df
languages | name | uuid | version | geo | classific | classificSystem | type | refYear | validUntil | compliance | subType | dataSources | regNo | regAuthority | nodeid | uri | dsType | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | [en] | Concrete C16/20 ECOPact Prime , Mix code HTL29... | f5512d96-cd2d-45a6-9bb7-a1b8aa013d69 | 00.01.000 | UK | 02 Bauprodukte / Normal- Leicht- und Porenbeto... | IBUCategories | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | IBU-HOL-HOL-2204100-GB2023000136-1SUG001-EN | {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} | IBU_DATA | https://ibudata.lca-data.com/resource/datastoc... | Process |
1 | [en] | Concrete C16/20 ECOPact Prime , Mix code WAL29... | 0c0cc282-f668-4a11-b216-015eff4fa7ff | 00.01.000 | UK | 02 Bauprodukte / Normal- Leicht- und Porenbeto... | IBUCategories | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | IBU-HOL-HOL-2204100-GB2023000181-1SUG001-EN | {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} | IBU_DATA | https://ibudata.lca-data.com/resource/datastoc... | Process |
2 | [en] | Concrete C16/20 ECOPact Prime, Mix code BRL292... | a59871c4-2632-4387-b82a-53c98152776b | 00.01.000 | UK | 02 Bauprodukte / Normal- Leicht- und Porenbeto... | IBUCategories | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | IBU-HOL-HOL-2204100-GB2023000194-1SUG001-EN | {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} | IBU_DATA | https://ibudata.lca-data.com/resource/datastoc... | Process |
3 | [en] | Concrete C16/20 ECOPact Prime, Mix code BTL292... | 3b01ec67-9fb8-48e9-b98f-caf0f03612b6 | 00.01.000 | UK | 02 Bauprodukte / Normal- Leicht- und Porenbeto... | IBUCategories | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | IBU-HOL-HOL-2204100-GB2023000060-1SUG001-EN | {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} | IBU_DATA | https://ibudata.lca-data.com/resource/datastoc... | Process |
4 | [en] | Concrete C16/20 ECOPact Prime, Mix code BWL292... | 5ab59e12-4c01-4882-8015-67a6df685783 | 00.01.000 | UK | 02 Bauprodukte / Normal- Leicht- und Porenbeto... | IBUCategories | EPD | 2023 | 2028 | [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... | specific dataset | [{'uuid': 'b497a91f-e14b-4b69-8f28-f50eb157676... | IBU-HOL-HOL-2204100-GB2023000081-1SUG001-EN | {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} | IBU_DATA | https://ibudata.lca-data.com/resource/datastoc... | Process |
There may be multiple datasets for a single EPD (with a single EPD number), for example in a case where there is a single EPD covering multiple product variants (e.g. a board with different thicknesses) while providing distinct LCA results for each variant. This is not to be confused with an EPD on an average of multiple products where there is only one set of LCA results.
Explaining the architecture¶
The entire system comprises two main parts. The first part, the ECO Portal, collects and combines data and is directly owned and operated by ECO Platform.
The second part is the nodes of the individual EPD Program Operators, which are all connected to the ECO Portal.
So far, we have mainly interacted with the ECO Portal.
This diagram explains the architecture.
The ECO Portal does not store data; it only collects data from the other nodes and can perform queries on it. It also does not show the complete dataset, but only the most relevant meta-data.
If you want to perform more complex queries on a single EPD, you can talk to the node directly to get the full dataset, like this:
So let's see what we can do on a single node.
Getting the PDF¶
We're going to look for an EPD dataset with a known EPD number, then generate the link that gives us the PDF for this EPD and then we are going to pull on that link.
params["registrationNumber"] = "IBU-HOL-HOL-2204100-DE2023000034-1SUG001-DE"
res = requests.get(f'{BASE_URL}{PROCESS_ENDPOINT}', headers=headers, params=params)
res.raise_for_status()
del params['registrationNumber']
df = pd.DataFrame(res.json()["data"])
df
lcd = df.iloc[0]
print(lcd)
uri = lcd["uri"]
uuid = lcd["uuid"]
version = lcd["version"]
languages [de, en] name Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... uuid 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 version 00.01.001 geo DE classific 02 Bauprodukte / Normal- Leicht- und Porenbeto... classificSystem IBUCategories type EPD refYear 2023 validUntil 2028 compliance [{'name': 'EN 15804+A2', 'uuid': 'c0016b33-8cf... subType specific dataset dataSources [{'uuid': '28d74cc0-db8b-4d7e-bc44-5f6d56ce0c4... regNo IBU-HOL-HOL-2204100-DE2023000034-1SUG001-DE regAuthority {'uuid': 'd111dbec-b024-4be5-86c5-752d6eb2cf95'} nodeid IBU_DATA uri https://ibudata.lca-data.com/resource/datastoc... dsType Process Name: 0, dtype: object
base_url = uri.split("/")[0] +"//" + uri.split("/")[2]
url = f"{base_url}/resource/processes/{uuid}/epd?version={version}"
print(url)
# Make the GET request
response = requests.get(url, headers=headers)
# Check if the request was successful
if response.status_code == 200:
# Save the PDF to a file
with open("example_process.pdf", "wb") as file:
file.write(response.content)
print("PDF downloaded successfully.")
else:
print(f"Failed to download PDF. Status code: {response.status_code}")
https://ibudata.lca-data.com/resource/processes/0ebf7111-4d1d-47a9-96cd-2e969f0f96a3/epd?version=00.01.001 PDF downloaded successfully.
Get CSV¶
The results of the EPD are also available in CSV format, where the results for each module are rendered as one row, which we can retrieve as follows:
base_url = uri.split("/")[0] +"//" + uri.split("/")[2]
base_url = " https://ibudata.lca-data.com"
url = f"{base_url}/resource/processes/{uuid}?format=csv&version={version}"
print(url)
print()
# Make the GET request
response = requests.get(url , headers=headers)
from io import StringIO
csv_file = StringIO(response.text)
df = pd.read_csv(csv_file, sep=';')
df
https://ibudata.lca-data.com/resource/processes/0ebf7111-4d1d-47a9-96cd-2e969f0f96a3?format=csv&version=00.01.001
UUID | Version | Name (de) | Name (en) | Kategorie (original) | Konformitaet | Hintergrunddatenbank(en) | Laenderkennung | Typ | Referenzjahr | ... | HTPc (A2) | HTPnc (A2) | IRP (A2) | SOP (A2) | ODP (A2) | POCP (A2) | ADPF (A2) | ADPE (A2) | WDP (A2) | Unnamed: 80 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | Beton C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Rez... | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | '02 Bauprodukte' / 'Normal- Leicht- und Porenb... | 'EN 15804+A2' / 'ISO 14025' | 'GaBi database (28d74cc0-db8b-4d7e-bc44-5f6d56... | DE | specific dataset | 2023 | ... | 1.520000e-08 | 1.749000e-06 | 3.616000 | 116.700 | 1.000000e-10 | 0.25260 | 877.30 | 7.400000e-06 | 5.54800 | NaN |
1 | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | Beton C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Rez... | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | '02 Bauprodukte' / 'Normal- Leicht- und Porenb... | 'EN 15804+A2' / 'ISO 14025' | 'GaBi database (28d74cc0-db8b-4d7e-bc44-5f6d56... | DE | specific dataset | 2023 | ... | 8.000000e-10 | 6.620000e-08 | 0.007263 | 22.440 | 1.100000e-15 | 0.05488 | 44.46 | 2.233000e-07 | 0.02749 | NaN |
2 | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | Beton C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Rez... | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | '02 Bauprodukte' / 'Normal- Leicht- und Porenb... | 'EN 15804+A2' / 'ISO 14025' | 'GaBi database (28d74cc0-db8b-4d7e-bc44-5f6d56... | DE | specific dataset | 2023 | ... | 2.000000e-10 | 1.480000e-08 | 0.036620 | 3.138 | 1.131000e-13 | 0.01217 | 15.01 | 7.400000e-08 | 0.01124 | NaN |
3 | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | Beton C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Rez... | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | '02 Bauprodukte' / 'Normal- Leicht- und Porenb... | 'EN 15804+A2' / 'ISO 14025' | 'GaBi database (28d74cc0-db8b-4d7e-bc44-5f6d56... | DE | specific dataset | 2023 | ... | 0.000000e+00 | 0.000000e+00 | 0.000000 | 0.000 | 0.000000e+00 | 0.00000 | 0.00 | 0.000000e+00 | 0.00000 | NaN |
4 | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | Beton C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Rez... | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | '02 Bauprodukte' / 'Normal- Leicht- und Porenb... | 'EN 15804+A2' / 'ISO 14025' | 'GaBi database (28d74cc0-db8b-4d7e-bc44-5f6d56... | DE | specific dataset | 2023 | ... | 2.200000e-09 | 1.423000e-07 | 0.015150 | 36.250 | 2.900000e-15 | 0.14280 | 115.60 | 7.520000e-07 | 0.03759 | NaN |
5 | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | Beton C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Rez... | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | '02 Bauprodukte' / 'Normal- Leicht- und Porenb... | 'EN 15804+A2' / 'ISO 14025' | 'GaBi database (28d74cc0-db8b-4d7e-bc44-5f6d56... | DE | specific dataset | 2023 | ... | 2.400000e-09 | 1.224000e-07 | 0.016370 | 39.180 | 3.100000e-15 | 0.02832 | 124.90 | 8.129000e-07 | 0.04064 | NaN |
6 | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | Beton C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Rez... | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | '02 Bauprodukte' / 'Normal- Leicht- und Porenb... | 'EN 15804+A2' / 'ISO 14025' | 'GaBi database (28d74cc0-db8b-4d7e-bc44-5f6d56... | DE | specific dataset | 2023 | ... | 8.000000e-10 | 4.910000e-08 | 0.363600 | 9.117 | 9.000000e-16 | 0.03834 | 80.37 | 2.314000e-07 | 0.03252 | NaN |
7 | 0ebf7111-4d1d-47a9-96cd-2e969f0f96a3 | 00.01.001 | Beton C25/30 XC4 XF1 XA1 F3 16 M ECOPact , Rez... | Concrete C25/30 XC4 XF1 XA1 F3 16 M ECOPact , ... | '02 Bauprodukte' / 'Normal- Leicht- und Porenb... | 'EN 15804+A2' / 'ISO 14025' | 'GaBi database (28d74cc0-db8b-4d7e-bc44-5f6d56... | DE | specific dataset | 2023 | ... | -3.000000e-09 | -2.009000e-07 | -0.568000 | -65.780 | -1.000000e-10 | -0.01614 | -119.90 | -3.565000e-06 | -2.58600 | NaN |
8 rows × 81 columns
Get full dataset in ILCD+EPD format as ZIP file¶
If you want to obtain the complete ILCD+EPD dataset including its dependencies as a ZIP file, you can use the code below. For more details on the structure of the ZIP file, refer to the ILCD+EPD Data Format Introduction.
url = f"{base_url}/resource/processes/{uuid}/zipexport?version={version}"
print(url)
print()
# Make the GET request
response = requests.get(url , headers=headers)
output_path = "example_process.zip"
if response.status_code == 200:
with open(output_path, "wb") as f:
f.write(response.content)
print("Download complete.")
else:
print("Failed to download file. Status code:", response.status_code)
https://ibudata.lca-data.com/resource/processes/0ebf7111-4d1d-47a9-96cd-2e969f0f96a3/zipexport?version=00.01.001 Download complete.
Amended¶
Python Setup¶
You need to have Python set up for this notebook to run.
Just follow the instructions provided here.
We recommend using a virtual environment, but feel free to use whatever you like.
Create and activate a virtual environment:
python3 -m venv py_env source py_env/bin/activate
Install the required packages:
pip install ipykernel notebook numpy matplotlib pandas pyarrow ipympl
Add the virtual environment to Jupyter:
python -m ipykernel install --user --name=py_env --display-name "Python (py_env)"
(Optional) Open the project in VSCode:
code .
- Ensure the virtual environment is active inside VSCode.
- Select the kernel
Python (py_env)
when opening a notebook.
If using the integrated terminal in VSCode, activate the environment inside the terminal:
source py_env/bin/activate
Getting API Key¶
To get started, you'll need an access token. Follow these steps:
Register for an API Key:
- Go to the registration page.
- Complete the registration process if you haven’t already.
Generate Your Token:
- Scroll to the bottom of the page and click on
My Profile
. - Navigate to the
API Key
section. - Generate a new API key and copy it.
- Scroll to the bottom of the page and click on
Save the Token:
- Create a
.env
file in your project folder. - Add the token to the file with the variable name
TOKEN
. The.env
file should look something like this:plaintext TOKEN=iY291bnRyeSI6IkR...aWFz
- Create a
License¶
This notebook is under the MIT license