staticdata.dev
Menu
Datasets About Contact

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).

v1.0.0 CC-BY-SA-3.0 118 records Updated 2026-10-05 stable Source:  Bowserinator/Periodic-Table-JSON, CIAAW Standard Atomic Weights

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
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

    Open

    min: 23.9 KB · /v1/periodic-table.min.json

  • CSV 11.4 KB

    /v1/periodic-table.csv

    Open
  • TypeScript 31.0 KB

    /v1/periodic-table.ts

    export const periodicTable

    type ChemicalElement = (typeof periodicTable)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
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.

Data preview
numbersymbolnameatomicMasscategorygroup
1HHydrogen1.008diatomic nonmetal1
2HeHelium4.002602noble gas18
3LiLithium6.94alkali metal1
4BeBeryllium9.0121831alkaline earth metal2
5BBoron10.81metalloid13
6CCarbon12.011polyatomic nonmetal14
7NNitrogen14.007diatomic nonmetal15
8OOxygen15.999diatomic nonmetal16
9FFluorine18.998403162diatomic nonmetal17
10NeNeon20.1797noble gas18

Showing 10 of 118. View full data:  JSON · CSV

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/periodic-table.json | jq '.[0]'
JavaScript
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]);
Python
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])
Go
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])
}
Rust
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