AI Data Feed

EMF Sensor Data

Real-time electromagnetic field measurements from Alberta, Canada. Built for AI agents, researchers, and autonomous systems.

Sensor Network

Eight sensor nodes continuously measure electromagnetic fields across biological, environmental, and extraterrestrial sources. All data is real, live, and updated every few seconds from hardware deployed in Alberta, Canada.

Data Disclaimer — This is an experimental sensor network. EMF readings from the local sensors (NodeAir1, NodeStem1, NodeRoot1, NodeSoil1) are raw, uncalibrated measurements from ESP32-based hardware. Values may reflect power supply fluctuations, wiring artifacts, sensor drift, or environmental noise rather than true electromagnetic field variations. Sensor configurations, positions, and settings are changed periodically without notice, which may cause sudden shifts in baseline readings. The GOES satellite data (GOES-Xray, GOES-Proton) is sourced from NOAA and is scientifically calibrated. Indoor climate readings (temperature, humidity) are from consumer-grade sensors. Do not use this data for safety-critical, medical, or regulatory decisions. It is provided as-is for research, experimentation, and curiosity.
NodeAir1

Ambient Air EMF

Electromagnetic field strength measured in open air. Captures environmental EMF variations from natural and anthropogenic sources including power lines, weather systems, and geomagnetic activity.

NodeStem1

Plant Stem Bioelectrics

Bioelectric potential measured directly on living plant stem tissue (millivolts). Tracks how electromagnetic fields and environmental conditions influence electrical signaling in plants.

NodeRoot1

Plant Root Bioelectrics

Bioelectric potential at the root zone of a living plant. Measures the electrical activity in the rhizosphere — where soil chemistry, moisture, and EMF interact with root systems.

NodeSoil1

Soil EMF

Electromagnetic field measurements at ground level within soil. Captures subsurface EMF influenced by moisture content, mineral composition, and biological activity.

HouseMonitor-Temp

Temperature

Indoor ambient temperature in degrees Celsius. Provides environmental baseline data for correlating EMF variations with thermal conditions.

HouseMonitor-Humidity

Humidity

Indoor relative humidity as a percentage. Humidity affects electromagnetic propagation and is a key variable for understanding EMF behavior in enclosed environments.

GOES-Xray

Solar X-ray Flux

Real-time solar X-ray flux from NOAA GOES satellites, measured in watts per square meter. Indicates solar flare activity that directly affects Earth's electromagnetic environment.

GOES-Proton

Solar Proton Flux

Solar energetic proton flux from NOAA GOES satellites (particles/cm²/s/sr). Elevated proton events correlate with geomagnetic storms and measurable changes in terrestrial EMF readings.

Live Readings

Current sensor values, updated every 30 seconds. For programmatic access, use the API endpoints documented below.

API Documentation

All endpoints return JSON. Anonymous access allowed (30 req/min). Register a free API key for higher limits. Pass your key via X-API-Key header. Base URL: https://driftwest.xyz/api

GET /api/nodes

Returns all sensor nodes with their current status, type, and connection information.

curl https://driftwest.xyz/api/nodes

Response:

{ "nodes": [ { "nodeId": "NodeAir1", "status": "online", "lastSeen": 1709742000000, "nodeType": "EMF_SENSOR", "ipAddress": "192.168.x.x" }, ... ] }

GET /api/data/latest/{nodeId}

Returns the most recent reading from a specific sensor node.

  • nodeId — Sensor node identifier (e.g., NodeAir1, GOES-Xray)
curl https://driftwest.xyz/api/data/latest/NodeAir1

Response:

{ "nodeId": "NodeAir1", "timestamp": 1709742000000, "value": 42.7, "metadata": { ... } }

GET /api/data/{nodeId}?start={ms}&end={ms}&limit={n}

Returns historical time-series readings for a node within a time range.

  • nodeId — Sensor node identifier
  • start — Start timestamp in milliseconds (default: 1 hour ago)
  • end — End timestamp in milliseconds (default: now)
  • limit — Maximum number of readings to return (default: 1000)
# Last 6 hours of air EMF data curl "https://driftwest.xyz/api/data/NodeAir1?start=$(date -d '6 hours ago' +%s)000&limit=500"

Response:

{ "nodeId": "NodeAir1", "startTime": 1709720400000, "endTime": 1709742000000, "count": 500, "data": [ { "timestamp": 1709720400000, "value": 41.2, "metadata": null }, { "timestamp": 1709720460000, "value": 41.8, "metadata": null }, ... ] }

POST /api/data/multi

Batch query multiple sensor nodes simultaneously. Returns data grouped by node ID.

curl -X POST https://driftwest.xyz/api/data/multi \ -H "Content-Type: application/json" \ -d '{ "nodeIds": ["NodeAir1", "NodeStem1", "GOES-Xray"], "limit": 100 }'

Response:

{ "nodeIds": ["NodeAir1", "NodeStem1", "GOES-Xray"], "startTime": 1709738400000, "endTime": 1709742000000, "data": { "NodeAir1": [{ "timestamp": ..., "value": 42.7 }, ...], "NodeStem1": [{ "timestamp": ..., "value": 18.3 }, ...], "GOES-Xray": [{ "timestamp": ..., "value": 1.2e-6 }, ...] } }

GET /api/stats/ranges

Returns 24-hour min, max, mean, and reading count for every active node. Cached for 5 minutes.

curl https://driftwest.xyz/api/stats/ranges

Response:

{ "ranges": { "NodeAir1": { "min": 12.1, "max": 87.4, "mean": 43.2, "count": 8640 }, "NodeStem1": { "min": 5.0, "max": 32.8, "mean": 18.1, "count": 8640 }, "GOES-Xray": { "min": 1e-7, "max": 5e-5, "mean": 2.3e-6, "count": 2880 }, ... }, "timestamp": 1709742000000 }

POST /api/account/register

Register for a free API key. Returns an API key immediately.

curl -X POST https://driftwest.xyz/api/account/register \ -H "Content-Type: application/json" \ -d '{"email": "you@example.com"}'

Response:

{ "success": true, "apiKey": "dw_abc123...", "email": "you@example.com", "tier": "free", "limits": { "requestsPerMinute": 60, "requestsPerDay": 5000 } }

GET /api/account/status

Check your API key status, usage, and tier limits. Requires X-API-Key header.

curl -H "X-API-Key: dw_your_key" https://driftwest.xyz/api/account/status

Response:

{ "email": "you@example.com", "tier": "free", "active": true, "limits": { "requestsPerMinute": 60, "requestsPerDay": 5000 }, "requestsToday": 142, "totalRequests": 3850 }

GET /api/account/tiers

List available API tiers with pricing, limits, and features. No authentication required.

curl https://driftwest.xyz/api/account/tiers

GET /api/health

System health check. Returns uptime and current timestamp.

curl https://driftwest.xyz/api/health

Response:

{ "status": "ok", "timestamp": 1709742000000, "uptime": 864000 }

API Key Management

Register for a free API key to get higher rate limits, or check your existing key's status and usage.

Data Access Tiers

All tiers include real-time JSON API access. Free tier is fully functional with no authentication required.

Free
$0 / forever
  • Latest readings from all 8 nodes
  • 24-hour statistics and ranges
  • Health check endpoint
  • 60 requests per minute
  • No authentication required
  • JSON responses
Enterprise
Custom
  • Everything in Researcher
  • Full historical archive
  • WebSocket real-time stream
  • Custom data exports (CSV, Parquet)
  • Dedicated rate limits
  • Integration support
Contact Us

Start Querying

The API is live and open. No signup required for free tier access.

curl https://driftwest.xyz/api/stats/ranges