Get a Template
curl --request GET \
--url https://api.spidra.io/api/templates/{slug}import requests
url = "https://api.spidra.io/api/templates/{slug}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.spidra.io/api/templates/{slug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.spidra.io/api/templates/{slug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.spidra.io/api/templates/{slug}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.spidra.io/api/templates/{slug}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spidra.io/api/templates/{slug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "success",
"template": {
"slug": "<string>",
"version": 123,
"title": "<string>",
"summary": "<string>",
"site": {
"key": "<string>",
"name": "<string>",
"domain": "<string>"
},
"categories": [
"<string>"
],
"tool": "batch",
"featured": true,
"gallery": true,
"status": "active",
"fields": [
"<string>"
],
"usesAi": true,
"availability": {
"state": "notice",
"message": "<string>"
},
"description": "<string>",
"limits": [
"<string>"
],
"inputs": [
{
"key": "<string>",
"label": "<string>",
"type": "<string>",
"required": true,
"default": "<unknown>",
"example": "<unknown>",
"options": [
{
"value": "<string>",
"label": "<string>"
}
],
"min": 123,
"max": 123,
"maxItems": 123,
"advanced": true,
"help": "<string>",
"showIf": {}
}
],
"columns": [
{
"key": "<string>",
"label": "<string>",
"format": "<string>"
}
],
"hasRows": true,
"sample": [
{}
],
"variants": [
{}
]
}
}{
"status": "error",
"message": "<string>"
}Templates
Get a Template
A template’s inputs, default columns, limits and sample rows.
GET
/
templates
/
{slug}
Get a Template
curl --request GET \
--url https://api.spidra.io/api/templates/{slug}import requests
url = "https://api.spidra.io/api/templates/{slug}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.spidra.io/api/templates/{slug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.spidra.io/api/templates/{slug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.spidra.io/api/templates/{slug}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.spidra.io/api/templates/{slug}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spidra.io/api/templates/{slug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "success",
"template": {
"slug": "<string>",
"version": 123,
"title": "<string>",
"summary": "<string>",
"site": {
"key": "<string>",
"name": "<string>",
"domain": "<string>"
},
"categories": [
"<string>"
],
"tool": "batch",
"featured": true,
"gallery": true,
"status": "active",
"fields": [
"<string>"
],
"usesAi": true,
"availability": {
"state": "notice",
"message": "<string>"
},
"description": "<string>",
"limits": [
"<string>"
],
"inputs": [
{
"key": "<string>",
"label": "<string>",
"type": "<string>",
"required": true,
"default": "<unknown>",
"example": "<unknown>",
"options": [
{
"value": "<string>",
"label": "<string>"
}
],
"min": 123,
"max": 123,
"maxItems": 123,
"advanced": true,
"help": "<string>",
"showIf": {}
}
],
"columns": [
{
"key": "<string>",
"label": "<string>",
"format": "<string>"
}
],
"hasRows": true,
"sample": [
{}
],
"variants": [
{}
]
}
}{
"status": "error",
"message": "<string>"
}Returns everything you need to run a template: its
The inputs of Google Maps leads, shortened:
Send them as
An input with
inputs (the fields of its form), the columns its table shows, its limits in plain words, and sample rows. No API key is needed.
curl "https://api.spidra.io/api/templates/google-maps-leads"
[
{ "key": "query", "label": "Business type", "type": "text", "required": true, "example": "dentist" },
{ "key": "areas", "label": "Areas", "type": "list", "required": true, "example": ["Lekki, Lagos", "Ikeja, Lagos"], "maxItems": 25,
"help": "One per line. Each area is one search (1 credit)." },
{ "key": "pages", "label": "Pages per area", "type": "number", "default": 1, "min": 1, "max": 5,
"help": "Each page adds up to 20 more places and costs 1 credit." },
{ "key": "findContacts", "label": "Find emails and social links", "type": "boolean", "default": false },
{ "key": "language", "label": "Language", "type": "language", "default": "en", "advanced": true, "options": [ { "value": "en", "label": "English" } ] }
]
inputs by key when you run the template. Inputs with a default can be left out.
Input types
type | Send |
|---|---|
text, textarea | A string. |
number | A number between min and max. |
boolean | true or false. |
select, country, language | One of the options values. |
list | An array of strings, up to maxItems. |
date | "2026-11-03". |
dateRange | { "from": "2026-11-01", "to": "2026-11-30" }. |
month, week, year | "2026-11", "2026-W42", "2026". |
airport | An airport or city code such as "LOS". Look Up Airports finds them. |
showIf only applies when another input has one of the listed values, such as a week picker that applies only when period is weekly.
Errors
404 with code: "TEMPLATE_NOT_FOUND" when no template has this slug.Was this page helpful?

