Periodic Table
A complete reference of all 118 IUPAC-recognised chemical elements, sorted by atomic number. Each record includes the element symbol, full name, standard atomic weight (atomic mass), element category, periodic table group and period, standard phase at room temperature, and full electron configuration string. Covers hydrogen (Z=1) through oganesson (Z=118).
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/periodic-table.json
Or use as a typed import:
import { periodicTable } from "https://staticdata.dev/v1/periodic-table.ts"
Formats
- JSON 30.8 KB
/v1/periodic-table.json
min: 23.9 KB · /v1/periodic-table.min.json
- CSV 11.4 KB
/v1/periodic-table.csv
- TypeScript 31.0 KB
/v1/periodic-table.ts
export const periodicTable
type ChemicalElement = (typeof periodicTable)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| number | number | Atomic number (proton count) | 1 |
| symbol | string | Chemical symbol | H |
| name | string | Element name in English | Hydrogen |
| atomicMass | number | Standard atomic weight (CIAAW; conventional value for interval elements, mass number of the longest-lived isotope for elements without a standard weight) | 1.008 |
| category | string | IUPAC element category (e.g. alkali metal, noble gas) | diatomic nonmetal |
| group | number | Periodic table group number (1–18) | 1 |
| period | number | Periodic table period number (1–7) | 1 |
| phase | string | Standard phase at room temperature (Gas, Solid, or Liquid) | Gas |
| electronConfiguration | string | Full electron configuration in spdf notation | 1s1 |
Preview
First 10 records.
| number | symbol | name | atomicMass | category | group |
|---|---|---|---|---|---|
| 1 | H | Hydrogen | 1.008 | diatomic nonmetal | 1 |
| 2 | He | Helium | 4.002602 | noble gas | 18 |
| 3 | Li | Lithium | 6.94 | alkali metal | 1 |
| 4 | Be | Beryllium | 9.0121831 | alkaline earth metal | 2 |
| 5 | B | Boron | 10.81 | metalloid | 13 |
| 6 | C | Carbon | 12.011 | polyatomic nonmetal | 14 |
| 7 | N | Nitrogen | 14.007 | diatomic nonmetal | 15 |
| 8 | O | Oxygen | 15.999 | diatomic nonmetal | 16 |
| 9 | F | Fluorine | 18.998403162 | diatomic nonmetal | 17 |
| 10 | Ne | Neon | 20.1797 | noble gas | 18 |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/periodic-table.json | jq '.[0]' import type { ChemicalElement } from "https://staticdata.dev/v1/periodic-table.ts";
const res = await fetch("https://staticdata.dev/v1/periodic-table.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const periodicTable: ChemicalElement[] = await res.json();
console.log(periodicTable[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/periodic-table.min.json") as r:
periodicTable = json.load(r)
print(periodicTable[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/periodic-table.min.json")
if err != nil { panic(err) }
defer resp.Body.Close()
var data []map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
panic(err)
}
fmt.Println(data[0])
} use serde_json::Value;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let body = ureq::get("https://staticdata.dev/v1/periodic-table.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
Data was sourced from the community-maintained Periodic-Table-JSON repository (licensed CC BY-SA 3.0), which aggregates values from IUPAC publications and Wikipedia; this dataset is therefore distributed under CC BY-SA 3.0 and reuse must credit Bowserinator/Periodic-Table-JSON and share alike. Atomic masses follow the CIAAW standard atomic weights (Atomic Weights 2021 with the 2024 revisions for Gd, Lu and Zr, as of October 2026), given without their uncertainty; elements with an interval standard atomic weight (H, Li, B, C, N, O, Mg, Si, S, Cl, Ar, Br, Tl, Pb) use the IUPAC conventional value, and elements without a standard atomic weight use the mass number of their longest-lived known isotope. The dataset covers all 118 confirmed elements (Z=1 to Z=118); element 119 (Ununennium), which is only theoretically predicted, is excluded.
Element categories follow the extended classification used on Wikipedia and widely adopted in educational materials: alkali metal, alkaline earth metal, transition metal, post-transition metal, metalloid, polyatomic nonmetal, diatomic nonmetal, noble gas, lanthanide, actinide, and “unknown” prefixed labels for synthetic superheavy elements whose properties are largely predicted. Lanthanides and actinides are assigned group 3 in this dataset, consistent with IUPAC recommendations.
Electron configurations are given as full spdf strings (not abbreviated with noble-gas cores), making them suitable for parsing and display without requiring a lookup table for noble-gas shorthand. Phase values are title-cased strings: “Gas”, “Solid”, or “Liquid” (bromine and mercury are the known liquids at standard conditions; copernicium is listed as “Liquid” based on theoretical prediction). Phases, categories, and configurations for the superheavy elements (roughly Z ≥ 104) are predictions rather than measurements.
Versioning
URLs under /v1/ are stable: field names and types will not change in a way
that breaks consumers. Values can be corrected or records added when the upstream source
changes; schema-incompatible updates ship under a new version path. See the
periodic-table changelog for this dataset's history.
More Code datasets
- ansi-colors
- ascii
- cron-presets
- css-at-rules
- css-functions
- css-named-colors
- css-properties
- css-pseudo-classes
- css-pseudo-elements
- css-units
- data-units
- exit-codes
- file-signatures
- hash-algorithms
- js-array-methods
- js-math-methods
- js-object-methods
- js-string-methods
- json-schema-keywords
- jwt-claims
- mathematical-constants
- measurement-units
- node-builtin-modules
- owasp-top-10
- physical-constants
- posix-signals
- programming-languages
- regex-flags
- regex-patterns
- roman-numerals
- si-base-units
- si-derived-units
- si-prefixes
- spdx-licenses
- strftime-tokens
- tailwind-colors
- time-units
- unicode-blocks
- unicode-general-categories
- unicode-planes
- unix-file-permissions
- xterm-256-colors