Exporting Batch Data
Once participants have completed your batch study, you can export all responses and uploaded files as a single ZIP archive.
Exports are generated asynchronously — the API responds immediately with a job ID, and the archive is built out-of-band. This keeps the request fast even for large batches with many uploaded files.
Workflow overview
Request an export by sending a POST request to the export endpoint. The API returns a job ID immediately.
Using the Prolific CLI
The Prolific CLI handles the full request, poll, and download flow in a single command:
By default the archive is saved to <batch-id>-export-<YYYYMMDD-HHMMSS>.zip in the current directory. Use --output to specify a path:
Requires the PROLIFIC_TOKEN environment variable and researcher access to the batch’s workspace.
Requesting an export
No request body is required.
Responses
If a new export job is created, the API returns 202 Accepted:
If a recent export for this batch already exists, the API returns 200 OK with the download URL immediately — you can skip polling and go straight to the download step.
Export requests are idempotent. Re-sending POST for a batch that is already generating or has a complete export returns the existing job ID or download URL rather than triggering a new generation.
Polling for completion
Use the export_id from the POST response to check the status of your export job.
Poll at a reasonable interval (every 3–5 seconds) until the status changes.
Complete response
The url is a presigned HTTPS link valid for 24 hours. Re-poll the GET endpoint to receive a refreshed URL if it has expired.
Polling example
Archive format
The downloaded ZIP contains the following structure:
The files/ directory is only present if participants uploaded files. The README.md inside the archive contains a quick-start guide and a pandas example.
The archive ships two JSONL files covering the same underlying data from different angles — choose whichever suits your analysis:
responses-by-submission.jsonl
Each line is a JSON object representing one participant’s submission, with all of their responses across every task they completed.
responses-by-task.jsonl
Each line is a JSON object representing one task, with all participant responses for that task collected together.
The path for file uploads is relative to the archive root, so it can be used directly after extraction.
Response value shapes
batch.json
Batch metadata and a list of all instructions, useful for mapping instruction IDs to their descriptions and types.
Working with the exported data
Load responses with pandas
Extract uploaded files
The submission_id prefix in each filename lets you match files back to their submission record in responses-by-submission.jsonl.
Handle all response types
Notes
- Presigned URL expiry: download URLs are valid for 24 hours. Re-poll
GETto receive a refreshed URL. - Retry on failure: a
failedexport can be retried by sendingPOSTagain. - Active responses only: deleted and
no_submissionresponses are excluded from the export.
By using AI Task Builder, you agree to our AI Task Builder Terms.