Beispiel: alle Antworten exportieren

Alle Antworten einer Umfrage seitenweise abrufen, in Python und JavaScript.

Die Beispiele rufen alle Antworten einer Umfrage ab September 2026 ab. Sie folgen links.next, bis keine weitere Seite mehr kommt. links.next ist eine absolute URL und enthält bereits alle Parameter.

Ersetze ph_xxxxxxxx durch deinen API-Token und die UUID durch die id deiner Umfrage.

Python

import requests

BASE = "https://app.poll-hero.com/api/v1"
HEADERS = {"Authorization": "Bearer ph_xxxxxxxx"}
SURVEY = "42293d51-fdd7-49cb-a693-cc6f9f0a070b"

url = f"{BASE}/surveys/{SURVEY}/responses"
params = {"page[size]": 100, "from": "2026-09-01"}
responses = []

while url:
    reply = requests.get(url, headers=HEADERS, params=params)
    reply.raise_for_status()
    body = reply.json()
    responses.extend(body["data"])
    url = body["links"]["next"]  # absolute URL, enthält alle Parameter
    params = None

print(len(responses), "Antworten")

JavaScript (Node.js)

const BASE = 'https://app.poll-hero.com/api/v1';
const HEADERS = { Authorization: 'Bearer ph_xxxxxxxx' };
const SURVEY = '42293d51-fdd7-49cb-a693-cc6f9f0a070b';

const params = new URLSearchParams({ 'page[size]': '100', from: '2026-09-01' });
let url = `${BASE}/surveys/${SURVEY}/responses?${params}`;
const responses = [];

while (url) {
  const reply = await fetch(url, { headers: HEADERS });
  if (!reply.ok) throw new Error(`HTTP ${reply.status}`);
  const body = await reply.json();
  responses.push(...body.data);
  url = body.links.next; // absolute URL, enthält alle Parameter
}

console.log(responses.length, 'Antworten');

Tipps

  • Fragen dazu laden: Rufe zusätzlich die Fragen der Umfrage ab (mit include_deleted=true). Über question_id ordnest du jede Antwort ihrer Frage zu.
  • Regelmäßig synchronisieren: Merke dir den Zeitpunkt des letzten Abrufs und lade beim nächsten Mal nur neuere Antworten mit from. Antworten können sich noch ändern, solange eine Teilnahme läuft (zum Beispiel wenn weitere Fragen beantwortet werden). Lade deshalb am besten die letzten Tage erneut und überschreibe Antworten anhand ihrer id.
  • Rate Limit beachten: Bei 429 wartest du die Sekunden aus Retry-After ab und wiederholst die Anfrage. Siehe Grundlagen.

Auf dieser Seite