Platform

Teams and API keys

The features on this page are for working as a team and for connecting Scrappy to your own systems: organizations, API keys with scopes, shared source templates, proxy profiles, suppression lists and lead targets for sources.

Organizations

An organization groups people who work together, so they can see each other's projects.

  1. Open the Organization page (/dashboard/organization) and choose Create Organization. Give it a name and a slug.
  2. Invite a member by email address and pick a role. The person must already have a Scrappy account.
  3. Optionally, restrict access to specific IP ranges by adding them to the IP allowlist.

The roles are ADMIN, EDITOR and VIEWER. A new member is a viewer unless you choose otherwise. Only admins can change an organization: inviting and removing members, editing the IP allowlist and updating settings. Any member can remove themselves. IP allowlist entries are IPv4 ranges in CIDR notation, such as 203.0.113.0/24, each with an optional label.

curl -X POST https://scrappy.gg/api/organizations/ORG_ID/members \
-H "Authorization: Bearer sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"email": "newmember@example.com", "role": "EDITOR"}'

API keys and scopes

An API key lets a script or another service act as you, without a browser session. Every API endpoint that accepts a signed-in user also accepts a key.

  1. Open Settings, go to the Developers tab and choose Create API Key.
  2. Name the key after what will use it.
  3. Tick the scopes it needs. Choose at least one.
  4. Optionally set an expiry date and a default project.
  5. Copy the key. It is shown once and cannot be retrieved afterwards.

Send the key as a bearer token:

curl https://scrappy.gg/api/leads \
-H "Authorization: Bearer sk_your_api_key" \
-H "x-project-id: project_123"

Scopes

A scope is a resource and an action, written resource:action. Give each key the smallest set it needs.

ResourceScopes
Leadsleads:read, leads:write
Sourcessources:read, sources:write
Jobsjobs:read, jobs:write
Profilesprofiles:read, profiles:write
Projectsprojects:read, projects:write
Campaignscampaigns:read, campaigns:write
Matchingmatching:read, matching:write
Cloud browserbrowser:read, browser:write
Read-only resourcesaccounts:read, analytics:read, email:read, notifications:read, chat:read, credits:read
Everything*

A key with a default project uses that project for cloud browser sessions when a request does not name one. To create keys over the API:

curl -X POST https://scrappy.gg/api/api-keys \
-H "Authorization: Bearer sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "CRM sync",
"scopes": ["leads:read", "sources:read"],
"expiresAt": "2027-01-01T00:00:00Z",
"projectId": "project_123"
}'

GET /api/api-keys lists your keys and DELETE /api/api-keys/{id} revokes one.

Source templates

A source template is a saved scraping configuration, including its selectors, that you can reuse to create sources quickly. On the Source Templates page (/dashboard/source-templates) you can:

  • create a template, or clone an existing one and adjust it;
  • export a template as a JSON file and import one a colleague sent you;
  • make a template public, which lists it in the marketplace at GET /api/source-templates/marketplace for other users to browse.

Proxy profiles

A proxy profile tells scraping jobs which proxy to send their requests through. Add one on the Proxy & Fingerprint Profiles page (/dashboard/proxy-profiles) with a name, a type, the proxy endpoint and its key. The types are RESIDENTIAL, DATACENTER and ROTATING. You can mark a profile as the default. The same page has a tab for browser fingerprint profiles.

Suppression lists

A suppression list holds the addresses and domains you must not contact: people who unsubscribed, competitors, existing customers. Manage lists on the Compliance page (/dashboard/compliance). Each entry is an email address, a whole domain, or both, with an optional reason.

curl -X POST https://scrappy.gg/api/suppression-list/LIST_ID/entries \
-H "Authorization: Bearer sk_your_api_key" \
-H "Content-Type: application/json" \
-d '[
{ "email": "user1@example.com", "reason": "Unsubscribed" },
{ "domain": "competitor.com", "reason": "Competitor domain" }
]'

The Compliance page also reports which of your sources comply with their site's robots.txt. This is a report: Scrappy does not block a source because of its robots.txt.

Weekly lead targets

A source can have a target for how many leads it should produce each week (the API calls this an SLA; it is not a service-level agreement from Scrappy). Set one with POST /api/sources/{id}/sla and a body of {"targetLeadsPerWeek": 100, "alertOnBreach": true}. With alertOnBreach on, you are notified when the source falls short; the notification preferences in Settings have a switch for it. GET /api/sources/{id}/uptime returns an uptime report for the source, covering 30 days by default.

Where to go next