Build forms, embed them anywhere, collect responses, export data. Typeform without the $25/mo logic jump paywall and without Typeform having your survey data.
Every operation in Surveyor is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/responses — list all responses with optional search and filter query parametersPOST /api/responses — create a new formresponse recordGET /api/responses/{id} — retrieve a single formresponse by IDPUT /api/responses/{id} — update an existing formresponseDELETE /api/responses/{id} — remove a formresponseGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringEvery formresponse your team creates contains context that matters — name, respondent, answers, score, status. When that data lives in a third-party service, you are one acquisition or policy change away from losing access. Surveyor keeps it local.
The dashboard opens at /ui and gives you a search bar, status filters, and a create form. Double-click any formresponse to edit it inline. Behind the dashboard, every operation maps to a REST endpoint under /api/responses. Responses are JSON. Authentication is handled at the network level — put Surveyor behind your VPN or reverse proxy, and it serves requests to whoever can reach it.
Run Surveyor on any server where you can execute a binary. The dashboard is immediately available at localhost, and the REST API integrates with your existing scripts and workflows. No external dependencies to configure, no managed service to subscribe to.
GET /api/responses — List all responses. Supports ?q=keyword for search and ?status=value for filteringPOST /api/responses — Create a new formresponse. Send JSON with at least nameGET /api/responses/{id} — Fetch one formresponse by IDPUT /api/responses/{id} — Update fields on an existing formresponseDELETE /api/responses/{id} — Remove a formresponseGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringSelf-hosted form builder and survey tool. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool surveyor
PORT=9290 ./surveyor
http://localhost:9290
Single binary. Embedded SQLite. No Docker. No database. No dependencies.
Your license key arrives by email within 5 minutes of checkout. Set it as an environment variable and restart the binary.
export SURVEYOR_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./surveyor
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.