Explore our interactive demo, comprehensive documentation, and developer resources. See how Fetch Adapter Service transforms industrial data integration in real-time.
Watch real-time data flow from industrial devices through Fetch's processing pipeline to cloud analytics.

Add Transformation modal for defining JSONPath-based extraction rules. Fields include Transformation Name, Connection selector, optional Value and Timestamp JSONPath inputs, and an Enable toggle with Add/Cancel actions

Add Transformation modal for defining JSONPath-based extraction rules. Fields include Transformation Name, Connection selector, optional Value and Timestamp JSONPath inputs, and an Enable toggle with Add/Cancel actions

Connections management view with connections grouped by protocol. Each row shows the connection name, enabled and status pills (Connected/Disconnected) and action buttons (Start/Stop, Edit, Remove). Left navigation and an 'Add Connection' CTA are visible.

Welcome dashboard for Fetch Adapter Service displaying key metrics (Total Connections, Active/Inactive, Connection Rate) and quick action tiles for managing Connections, Transformations, and Configuration

Data Egress page summarizing total and active connections plus configured egresses. Egress configuration cards show details (broker/server, topic pattern or database, measurement, API token masked) and action buttons to Start, Test, or Remove

Login screen with username and password fields and a prominent 'Sign in' button. Demo credentials are provided for quick access (Admin: admin/password, Viewer: viewer/password)
Comprehensive APIs, SDKs, and documentation to integrate Fetch into your applications and workflows.
GET /api/v1/devicesPOST /api/v1/connectionsPUT /api/v1/transformationsws://localhost:8080/stream{"type": "subscribe"}{"topic": "devices/+/data"}Get up and running quickly with these practical code examples for common integration scenarios.
const fetch = require('@scadadog/fetch-sdk');
const client = new fetch.Client({
host: 'localhost',
port: 8080
});
// Subscribe to MQTT data
client.mqtt.subscribe('sensors/+/temperature', {
transform: 'temperature_celsius',
filter: 'value > 25'
});
client.on('data', (message) => {
console.log('Temperature:', message.value);
});import fetch_sdk
client = fetch_sdk.Client('localhost:8080')
# Configure Modbus TCP device
device = client.modbus.add_device({
'host': '192.168.1.100',
'port': 502,
'unit_id': 1
})
# Poll holding registers
registers = device.read_holding_registers(
address=0,
count=10,
interval=1000 # 1 second
)
for value in registers:
print(f"Register {value.address}: {value.data}")package main
import (
"github.com/scadadog/fetch-go"
)
func main() {
client := fetch.NewClient("localhost:8080")
// Connect to OPC UA server
opcua := client.OPCUA().Connect(&fetch.OPCUAConfig{
Endpoint: "opc.tcp://192.168.1.200:4840",
Security: fetch.SecurityModeNone,
})
// Subscribe to node changes
opcua.Subscribe("ns=2;i=1001", func(value interface{}) {
fmt.Printf("Node value changed: %v\n", value)
})
}using ScadaDog.Fetch.SDK;
var client = new FetchClient("localhost:8080");
// Create transformation pipeline
var pipeline = client.Transformations.Create(new Pipeline {
Name = "temperature_processing",
Steps = new[] {
new JsonPathStep("$.sensors[*].temperature"),
new FilterStep("value > 20 && value < 80"),
new MapStep("celsius_to_fahrenheit"),
new RouteStep("analytics/temperature")
}
});
await pipeline.StartAsync();Comprehensive guides, tutorials, and reference materials to help you master Fetch Adapter Service.
Experience the power of industrial data integration with our interactive demo, or dive straight into development with our comprehensive SDKs.