infobreach.net is now seer.to. Your account works the same as before.

Account

Read your plan limits, live usage counters, and your own exposure.

GET /site/access

Read public preview and dashboard protection status

Reports marketing preview and dashboard bot protection state without exposing signup controls or private configuration. No authentication is required. The response is not cacheable.

What comes back.

  • 200 Current preview mode, dashboard protection state and preview search ceiling.

    • success boolean required

    • data object

      • marketing_mode boolean

      • dashboard_bot_protection boolean

        Enables session-only dashboard verification independently of preview. Does not challenge API-key clients.

      • searches_per_minute integer

  • 503 This surface is disabled or unreachable.

    • success boolean required

    • error string required

    • code string

      Machine-readable error tag. Omitted whenever it is empty, which is most generic errors, so branch on status too.

      One of quota_exceeded, hourly_limit, file_access_limit, plan_upgrade_required, upgrade_required, feature_not_enabled, marketing_mode, dashboard_verification_required, dashboard_verification_unavailable, bot_check_failed, email_verification_required, monitor_limit, monitor_surface_not_allowed, monitor_first_seen_not_allowed, monitor_webhook_invalid, monitor_webhook_not_allowed, monitor_webhook_key_required

POST /results/export

Authorize saving already-returned results

Send your key with this call.

Requires an active paid entitlement, including covered team seats and custom deals. No per-account flag is needed for ordinary result exports. The user DTO's can_export reports this entitlement. Free accounts and admin roles alone do not qualify. Marketing preview disables every export surface, including for paid users, admins and explicit grants. No request body is needed and no result data is uploaded. This endpoint does not fetch, unmask, format or return search records and consumes no search quota. The web client saves its held results locally as JSON or CSV after authorization succeeds.

Export scope is the records already returned, not unseen search pages. Bulk exports include all records in the active term filter, including records on other local pages and unsuccessful terms. JSON preserves nested data; CSV expands bulk records into individual rows, uses JSON Pointer column paths, retains arrays as JSON cells, and puts common query/graph context on the first row only. Spreadsheet formula cells are escaped. Wide CSV exports exceeding 512 columns must use JSON. Social JSON and CSV omit unavailable-platform lists, including nested graph metadata; matched profiles and availability counts are retained. Export does not change the data's existing masking or filtering. This action grant cannot recall data already sent to a browser.

In the URL.

  • surface in query string required

    The search surface whose held results will be saved.

    One of breaches, bulk, social, devices, people

What comes back.

  • 200 Current account may use result export; private, no-store.

    • success boolean required

    • data object

      • allowed boolean

        One of true

  • 400 A recognized surface query parameter is required.

  • 401 Valid authentication is required.

  • 403 Active paid entitlement required (plan_upgrade_required), or all exports are disabled during marketing preview (marketing_mode).

GET /me/exposure

Your own breach and stealer exposure

Send your key with this call.

Breach and stealer hit counts for the authenticated account's own email address. The counts are computed once and then persisted on the account, so later calls read the stored figures rather than hitting upstream again. This endpoint consumes no quota.

What comes back.

  • 200 Exposure counts. Also returned, with `has_email: false` and zero counts, when the account has no email address on file.

    • success boolean required

    • data object

      • breach_count integer

      • stealer_count integer

      • checked_at string, date-time

        Omitted until both the breach leg and the stealer leg have completed; a leg that failed is retried on the next call.

      • has_email boolean

GET /search/stats

Live usage and plan limits

Send your key with this call.

What comes back.

  • 200 Usage counters plus the ceilings they reset against. Read `metering` first: it decides whether `lookups` is a pool shared by every surface or a breach-and-device figure. Then read the two clocks: `period` and `resets_at` govern the search counters, while `unlocks_period` and `unlocks_reset_at` govern `unlocks`.

    • success boolean required

    • data object

      • plan string

        Starter is a retired legacy id and is not a checkout target.

        One of free, basic, starter, professional, premium, team

      • marketing_mode boolean

        True when temporary marketing access is active. Your search usage draws from the 10-search minute allowance, not paid counters.

      • metering string

        Read this before any counter below, because it decides what lookups actually counts.

        pooled - every paid tier (Pro, Premium, Team) and any custom plan an admin authors. One lookups pool is spent by breach search, device search, people search and API requests alike, and it resets daily.

        per_surface - the free tier only. Each surface holds its own small allowance: lookups narrows to mean breach and device searches only, people_searches is its own counter, social_resolves is its own, and unlocks exists. The three search counters reset daily, 10 apiece; unlocks holds 5 and resets weekly.

        During marketing preview, pooled also includes social resolves and the allowance resets every UTC calendar minute.

        One of pooled, per_surface

      • period string

        The search reset cadence. Normal plans use daily; marketing preview uses minute. It does not govern the separate unlocks_period clock.

        One of minute, daily, weekly, monthly

      • unlocks_period string

        The cadence the unlocks counter resets on, deliberately not the search cadence: it reads weekly while period reads daily. Branch on this field rather than assuming the unlock balance refills alongside the searches.

        One of daily, weekly, monthly

      • lookups integer

      • lookups_limit integer

        -1 = unlimited

      • people_searches integer

        People searches spent in the current search period. It only moves under per_surface metering; a pooled plan charges people search to lookups and leaves this at zero.

      • people_limit integer

        0 on every pooled plan, and there it means people search spends the lookups pool - not that the surface is locked. Under per_surface metering it is the real cap for the search period (10 a day on free). -1 = unlimited.

      • social_resolves integer

      • social_limit integer

        -1 = unlimited

      • unlocks integer

        Record unlocks spent in the current unlock period.

      • unlocks_limit integer

        0 on every paid plan, and there it means the plan has no unlock mechanism at all - not that unlocks are unlimited. Paid rows are not censored, so there is nothing to reveal. The free tier gets 2 a week, on the weekly clock unlocks_period names. -1 = unlimited.

      • monitors_limit integer

        Saved-monitor ceiling, a hard cap rather than a counter that resets on either clock.

      • wildcard boolean

        Whether this account may pass wildcard: true.

      • full_results boolean

        Whether breach and device row values are unmasked. It says nothing about people search, which is uncensored on every plan. Access to values inside the per-device file browser is reported separately by file_browser.

      • people_full_profile boolean

        Whether this account may resolve a profile_id into the full profile document. The drill-in is metered rather than plan-gated: it spends one unit of the people allowance, which is the lookups pool under pooled metering and people_searches under per_surface.

      • bulk_max_terms integer

        0 = bulk disabled

      • social_max_depth integer

        A capability rather than a counter: how many levels the recursive social resolver may expand for this account, 1 on the free tier and 3 on paid. It bounds the reach of a single resolve instead of holding an allowance, so it never depletes and never resets on either clock. One submitted resolve spends one unit against social_limit however many levels it reaches.

      • file_browser string

        Empty means the per-device browser returns full structure with masked values. full means the values are returned.

        One of , full

      • raw_search boolean

      • monitor_webhooks boolean

      • api_access boolean

      • last_reset string, date-time

      • resets_at string, date-time

        The last second of the current search period, the cadence period names. It governs the search counters only. It is authoritative: use it as given rather than recomputing a boundary from it.

      • unlocks_reset_at string, date-time

        The last second of the current unlock period, the cadence unlocks_period names, and so the instant the unlock allowance returns. It is a different instant from resets_at and is authoritative in the same way.

GET /stealer/limits

Stealer-specific limits and usage

Send your key with this call.

What comes back.

  • 200 Plan + counter snapshot.

    • success boolean required

    • data object

      • plan string

        Starter is a retired legacy id and is not a checkout target.

        One of free, basic, starter, professional, premium, team

      • hourly_cap integer

        0 = no per-hour cap

      • results_per_search integer

      • file_browser string

        '' = working browser with masked values, used by Free and Pro. full = real values, used by Premium and Team.

        One of , full

      • raw_search boolean