Public API Guide
Welcome to the Electrospinning Data Public API. This API provides programmatic, read-only access to thousands of standardized electrospinning data points, including polymers, solvents, morphologies, and process parameters.
Base URL
All public API requests should be made to:
https://electrospinning-data.org/api/public/dataset
Endpoints Summary
| Endpoint | Method | Description |
|---|---|---|
/ | GET | Fetch latest dataset experiments (JSON, paginated). |
/versions | GET | List all available dataset versions/snapshots. |
/{version} | GET | Fetch experiments for a specific version (e.g., v1). |
/export | GET | Export latest dataset (xlsx, zip, json). |
/{version}/export | GET | Export a specific dataset version. |
1. Fetching Data (JSON)
Fetch paginated and filterable data for the latest release or a specific version.
Parameters:
skip(default: 0): Number of records to skip.limit(default: 100): Maximum records to return.filter: URL-encoded JSON string of filter criteria (see Filtering).
- cURL
- Python
- R
# Fetch latest data
curl -G "https://electrospinning-data.org/api/public/dataset" \
-d "skip=0" \
-d "limit=50"
import requests
url = "https://electrospinning-data.org/api/public/dataset"
params = {"skip": 0, "limit": 20}
response = requests.get(url, params=params)
data = response.json()
print(f"Retrieved {len(data['data'])} of {data['total']} items.")
library(httr)
library(jsonlite)
base_url <- "https://electrospinning-data.org/api/public/dataset"
response <- GET(base_url, query = list(skip = 0, limit = 20))
data <- content(response, "parsed")
print(paste("Total elements:", data$total))
2. Exporting Data
Download the entire dataset or filtered subsets in research-ready formats.
Formats: xlsx (Excel), zip (Images), json (Full Data).
- cURL
- Python
- R
# Export latest dataset as Excel
curl -O -L "https://electrospinning-data.org/api/public/dataset/export?format=xlsx"
# Export specific version images
curl -O -L "https://electrospinning-data.org/api/public/dataset/v1/export?format=zip"
import requests
import json
# Download filtered Excel report
filters = {"polymer": "PAN"}
params = {"format": "xlsx", "filter": json.dumps(filters)}
response = requests.get("https://electrospinning-data.org/api/public/dataset/export", params=params)
with open("pan_dataset.xlsx", "wb") as f:
f.write(response.content)
library(httr)
library(jsonlite)
filters <- list(polymer = "PAN")
json_filters <- toJSON(filters, auto_unbox = TRUE)
response <- GET("https://electrospinning-data.org/api/public/dataset/export",
query = list(format = "xlsx", filter = json_filters))
writeBin(content(response, "raw"), "pan_dataset.xlsx")
3. Versioning
The Data Hub maintains immutable snapshots of the dataset for reproducible research. This allows researchers to reference a specific state of the data in their publications.
Retrieving Available Versions
To lookup how many versions are available and get their identifiers:
# List all snapshots
curl "https://electrospinning-data.org/api/public/dataset/versions"
Example Response:
[
{
"versionIdentifier": "v1.0.0",
"recordCount": 5420,
"createdAt": "2024-05-10T12:00:00Z"
},
{
"versionIdentifier": "v0.9-beta",
"recordCount": 1200,
"createdAt": "2023-11-20T09:30:00Z"
}
]
Accessing Versioned Data
Once you have an identifier (e.g., v1.0.0), you can use it in the path of your requests:
https://electrospinning-data.org/api/public/dataset/v1.0.0
4. Filtering Reference
The filter parameter accepts a JSON object. You can combine multiple fields to narrow down your search.
String Filters
| Key | Description |
|---|---|
polymer | Case-insensitive search in polymer names. |
solvent | Case-insensitive search in solvent names. |
morphology | Search in morphology labels (e.g., "Nanofiber"). |
instability | Search in jet instability labels. |
doi | Search for specific publication DOI. |
status | Filter by record status (e.g., "Published"). |
isFormationStable | yes or no. |
Numeric Range Filters
Use Min and Max suffixes for numeric range queries.
| Feature | Min Key | Max Key | Unit |
|---|---|---|---|
| Voltage | voltageMin | voltageMax | kV |
| Flow Rate | flowRateMin | flowRateMax | ml/h |
| Distance | tipDistMin | tipDistMax | cm |
| Concentration | concentrationMin | concentrationMax | wt% |
| Fiber Diameter | fiberDiameterMin | fiberDiameterMax | nm |
| Humidity | humidityMin | humidityMax | % |
Complex Examples
Example 1: Specific Morphology and Voltage Range Find all PAN nanofibers produced at 20-30 kV voltage:
{"polymer": "PAN", "morphology": "Nanofiber", "voltageMin": 20, "voltageMax": 30}
Rate Limiting
Please be mindful of rate limits. The public API enforces IP-based limits. If you receive a 429 Too Many Requests, please reduce your request frequency.