Skip to content
Screaming Data
Documentation menu

Public & system API

Request access

Ask for an account. No API key required.

POST
https://api.screamingdata.dev/v1/public/access_request
Authentication
None
Cost
Free
Body
JSON object

Overview

Stores a request for an account. Every request is reviewed; when it is approved we e-mail you a secure one-time link to your API login and first key (the key itself is never sent in an e-mail). The Request access form uses this endpoint.

The body is a JSON object (an array holding one object is also accepted). Errors are reported for the request as a whole: invalid input returns HTTP 400 with 40501 and the field name; more than 5 requests per hour from one IP address return HTTP 429 with 40202.

Cost

Free.

Request

POST /v1/public/access_request with Content-Type: application/json.

Body fields

The request body is a JSON object with the fields below.

email
string (email)required

Work e-mail address; the secure link to your credentials is sent there.

  • Max length254 characters
  • Exampledev@example.com
name
stringoptional

Your name.

  • Max length200 characters
  • ExampleJane Doe
company
stringoptional

Company or project name.

  • Max length200 characters
  • ExampleAcme Analytics
use_case
stringoptional

What you want to build and roughly how many products and marketplaces you need.

  • Max length2000 characters
  • ExampleDaily BSR and price tracking for about 5,000 products on com, uk and de.
website
stringoptional

Spam trap: leave it empty. Forms should render this field hidden from people.

  • Max length500 characters

Request example

This endpoint does not need credentials.

curl --request POST \
  --url "https://api.screamingdata.dev/v1/public/access_request" \
  --header "Content-Type: application/json" \
  --data '{
  "email": "dev@example.com",
  "name": "Jane Doe",
  "company": "Acme Analytics",
  "use_case": "Daily BSR and price tracking for about 5,000 products on com, uk and de."
}'

Response

HTTP 200. The body is the standard response envelope; check status_code at the top level and in every task.

Response example
{
  "version": "1.0.0",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "0.0158 sec.",
  "cost": 0,
  "tasks_count": 1,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "09241305-2d8f-4c1a-9e6b-7a3c5e0d4f82",
      "status_code": 20000,
      "status_message": "Ok.",
      "time": "0.0044 sec.",
      "cost": 0,
      "result_count": 1,
      "path": [
        "v1",
        "public",
        "access_request"
      ],
      "data": {
        "api": "public",
        "function": "access_request"
      },
      "result": [
        {
          "id": 1287,
          "status": "received",
          "created_at": "2026-09-24T13:05:12Z"
        }
      ]
    }
  ]
}
Example: Invalid e-mail address (HTTP 400)
Invalid e-mail address
{
  "version": "1.0.0",
  "status_code": 40501,
  "status_message": "Invalid field: `email`.",
  "time": "0.0012 sec.",
  "cost": 0,
  "tasks_count": 0,
  "tasks_error": 0,
  "tasks": []
}
Example: Too many requests from this IP address (HTTP 429)
Too many requests from this IP address
{
  "version": "1.0.0",
  "status_code": 40202,
  "status_message": "Rate limit exceeded.",
  "time": "0.0012 sec.",
  "cost": 0,
  "tasks_count": 0,
  "tasks_error": 0,
  "tasks": []
}

Result fields

Each element of tasks[].result is a access request receipt. Confirms that the request was stored.

id
integer· nullable

Id of the stored request.

status
string

Always received.

created_at
string (date-time)· nullable

When the request was stored, ISO 8601 in UTC.

Status codes

Codes this endpoint can return, at the request or task level. See Status codes for handling advice.

CodeMessageHTTPLevelWhen
20000Ok.200Request / taskThe request, or the individual task, was processed successfully.
40000Bad Request.400 / 200Request / taskThe body is not valid JSON or does not have the expected shape (for example, not an array of task objects, or more than one task for live). Also returned with HTTP 413 for bodies larger than 1 MiB and with HTTP 405 for a wrong HTTP method. As a task-level code (HTTP 200) it means the task cannot be carried out as asked, for example because the account already has the maximum number of API keys or monitored products.
40202Rate limit exceeded.429RequestToo many requests or tasks per minute for this account, or too many access requests from one IP address. The Retry-After header says how many seconds to wait.
40501Invalid field: `<name>`.400 / 200Request / taskA field has a wrong type, format or value; the message names the field, for example "Invalid field: `priority`."
50000Internal error.500RequestUnexpected server error. The request can be retried; contact support if it persists.