SPSS InsightGenius

Upload SPSS → Professional crosstabs with significance testing

API Docs →
1

Upload files

📊

Drop .sav, .por, or .zsav file here or click to browse

📋

Reporting Ticket (.docx)

📝

Questionnaire (.docx/.pdf)

API Reference — curl / Python / Node

curl — multiple banners + means + MRS

curl -X POST https://spss.insightgenius.io/v1/tabulate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@survey.sav" \
  -F 'spec={
    "banners": ["gender", "region", "age_group"],
    "stubs": ["_all_"],
    "significance_level": 0.95,
    "include_means": true,
    "nets": {"sat_overall": {"Top 2 Box": [4,5], "Bottom 2 Box": [1,2]}},
    "mrs_groups": {"Brand_Awareness": ["AWARE_A","AWARE_B","AWARE_C"]}
  }' -o tabulation.xlsx

Python

import requests, json

resp = requests.post(
    "https://spss.insightgenius.io/v1/tabulate",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    files={"file": open("survey.sav", "rb")},
    data={"spec": json.dumps({
        "banners": ["gender", "region"],
        "stubs": ["_all_"],
        "include_means": True,
        "significance_level": 0.95,
    })}
)
with open("tabulation.xlsx", "wb") as f:
    f.write(resp.content)
print(f"{resp.headers['X-Stubs-Success']} tables generated")

Node.js

const fs = require("fs");
const FormData = require("form-data");

const form = new FormData();
form.append("file", fs.createReadStream("survey.sav"));
form.append("spec", JSON.stringify({
  banners: ["gender", "region"],
  stubs: ["_all_"],
  include_means: true,
  significance_level: 0.95,
}));

const resp = await fetch("https://spss.insightgenius.io/v1/tabulate", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_KEY", ...form.getHeaders() },
  body: form,
});
fs.writeFileSync("tabulation.xlsx", Buffer.from(await resp.arrayBuffer()));
console.log(`${resp.headers.get("X-Stubs-Success")} tables generated`);

Full interactive docs: /docs | /redoc