DomScan OSINT API

Open source intelligence tools for domain analysis

Operations 7

POST /v1/subdomains/bulk Discover subdomains for multiple domains #
POST /v1/rdap/bulk Run multiple raw RDAP lookups #
GET /v1/email-auth Email authentication check #
GET /v1/similarity Domain similarity check #
GET /v1/mac MAC address lookup #
GET /v1/mac/info Get MAC lookup endpoint details #
GET /v1/report Comprehensive domain report #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/domscan-osint-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

domscan-osint-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DomScan OSINT API
  description: DomScan is a domain intelligence API providing domain analysis tools.
  version: 2.15.0
  contact:
    name: DomScan Support
    url: https://domscan.net
    email: support@domscan.net
  termsOfService: https://domscan.net/legal/terms
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://domscan.net
  description: Production server
security:
- apiKey: []
tags:
- name: OSINT
  description: Open source intelligence tools for domain analysis
paths:
  /v1/subdomains/bulk:
    post:
      operationId: bulkGetSubdomains
      summary: Discover subdomains for multiple domains
      description: Run the best-effort passive hostname evidence pipeline for multiple root domains. Discovery coverage is incomplete and result entries retain source labels. Accepts up to 10 items, preserves input order, and uses bounded concurrency. The outer response is HTTP 200 when the batch is accepted, so inspect each result for data or an error. Billing is 4 credits per validated item by default, or 5 credits per item when verify=true, with no bulk discount. Items that return a per-item lookup error are still billed.
      tags:
      - OSINT
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domains
              properties:
                domains:
                  type: array
                  minItems: 1
                  maxItems: 10
                  items:
                    type: string
                    format: hostname
                verify:
                  type: boolean
                  default: false
                include_wildcards:
                  type: boolean
                  default: false
                limit:
                  type: integer
                  minimum: 1
                  maximum: 2000
                  default: 500
            example:
              domains:
              - example.com
              - cloudflare.com
              verify: false
              limit: 500
      responses:
        '200':
          description: Batch accepted. Each ordered result contains either data or a per-item error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkLookupResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-domscan-credits:
        model: per_item
        default: 4
        variants:
        - parameter: verify
          equals: true
          credits: 5
        note: 4 credits per item by default; 5 credits per item when verify=true.
  /v1/rdap/bulk:
    post:
      operationId: bulkGetRdap
      summary: Run multiple raw RDAP lookups
      description: Get raw RDAP data for a homogeneous batch of domains, IP addresses, CIDR ranges, or autonomous system numbers. One type applies to the entire batch. Accepts up to 10 items, preserves input order, and uses bounded concurrency. The outer response is HTTP 200 when the batch is accepted, so inspect each result for data or an error. Billing is 2 credits per validated item with no bulk discount, including items that return a per-item lookup error.
      tags:
      - OSINT
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - queries
              properties:
                queries:
                  type: array
                  minItems: 1
                  maxItems: 10
                  items:
                    type: string
                type:
                  type: string
                  enum:
                  - domain
                  - ip
                  - autnum
                  default: domain
            example:
              queries:
              - example.com
              - cloudflare.com
              type: domain
      responses:
        '200':
          description: Batch accepted. Each ordered result contains either data or a per-item error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkLookupResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-domscan-credits:
        model: per_item
        default: 2
  /v1/email-auth:
    get:
      tags:
      - OSINT
      summary: Email authentication check
      description: Check DMARC, SPF, DKIM, MTA-STS and TLS-RPT policies, and recursive SPF lookup behavior.
      operationId: getEmailAuth
      parameters:
      - name: domain
        description: Domain whose SPF, DKIM and DMARC configuration should be checked.
        in: query
        required: true
        schema:
          type: string
      - name: selectors
        in: query
        required: false
        description: Optional comma-separated DKIM selectors. At most 50 valid DNS selector names are accepted.
        schema:
          type: string
          example: google,selector1,sendgrid
      responses:
        '200':
          description: Email authentication status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailAuthResponse'
              example:
                domain: google.com
                spf:
                  record: v=spf1 include:_spf.google.com ~all
                  lookup_estimate: 1
                  includes:
                  - _spf.google.com
                  redirect: null
                  macros_present: false
                  macro_references: []
                  lookup_walk_count: 1
                  lookup_limit_exceeded: false
                  walk:
                  - domain: google.com
                    depth: 0
                    record: v=spf1 include:_spf.google.com ~all
                    mechanisms:
                    - include:_spf.google.com
                    - ~all
                    includes:
                    - _spf.google.com
                    redirect: null
                    direct_lookup_count: 1
                    total_lookup_count: 1
                    macros_present: false
                    macro_references: []
                    multiple_records: 1
                  walk_errors: []
                  lookup_tree:
                    root_domain: google.com
                    node_count: 1
                    max_depth: 0
                    cycles_detected: []
                    nodes:
                    - domain: google.com
                      depth: 0
                      status: present
                      direct_lookup_count: 1
                      total_lookup_count: 1
                      includes:
                      - _spf.google.com
                      redirect: null
                      mechanisms:
                      - include:_spf.google.com
                      - ~all
                      errors: []
                    edges:
                    - from: google.com
                      to: _spf.google.com
                      type: include
                dkim:
                - selector: google
                  record: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
                  key_type: rsa
                  key_size: 2048
                dkim_audit:
                  selectors_checked:
                  - google
                  - default
                  - selector1
                  - selector2
                  selectors_found:
                  - selector: google
                    dns_name: google._domainkey.google.com
                    record: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
                    record_type: TXT
                    cname_targets: []
                    provider_hint: Google Workspace
                    key_type: rsa
                    key_size: 2048
                    valid: true
                    revoked: false
                    weak: false
                    hash_algorithms:
                    - sha256
                    service_type: email
                    flags:
                    - s
                    issues: []
                  total_found: 1
                  providers_detected:
                  - Google Workspace
                  valid_selector_count: 1
                  weak_selector_count: 0
                  revoked_selector_count: 0
                bimi:
                  exists: true
                  record: v=BIMI1; l=https://example.com/logo.svg; a=https://example.com/vmc.pem
                  valid: true
                  logo_url: https://example.com/logo.svg
                  authority_url: https://example.com/vmc.pem
                  logo_fetch_ok: true
                  logo_http_status: 200
                  logo_content_type: image/svg+xml
                  logo_bytes: 2048
                  logo_svg_detected: true
                  vmc_present: true
                  vmc_fetched: true
                  vmc_http_status: 200
                  vmc_content_type: application/x-pem-file
                  vmc_certificate_valid: true
                  vmc_subject: /CN=Example Inc VMC
                  vmc_issuer: /CN=Example Issuer
                  vmc_not_before: '2026-01-01T00:00:00Z'
                  vmc_not_after: '2027-01-01T00:00:00Z'
                  vmc_days_to_expiry: 258
                  vmc_fingerprint_sha256: AA:BB:CC:DD
                  vmc_san_domains:
                  - google.com
                  errors: []
                dmarc:
                  record: v=DMARC1; p=reject; rua=mailto:mailauth-reports@google.com
                  tags:
                    v: DMARC1
                    p: reject
                    rua: mailto:mailauth-reports@google.com
                mta_sts:
                  exists: true
                  record: v=STSv1; id=2024010101Z
                  valid: true
                  policy_id: 2024010101Z
                  policy_fetch_ok: true
                  policy_http_status: 200
                  mode: enforce
                  max_age: 86400
                  mx_hosts:
                  - '*.google.com'
                  mx_records:
                  - aspmx.l.google.com
                  policy_matches_mx: true
                  uncovered_mx: []
                  errors: []
                tls_rpt:
                  exists: true
                  record: v=TLSRPTv1; rua=mailto:sts-reports@google.com
                  valid: true
                  rua:
                  - mailto:sts-reports@google.com
                  errors: []
                client_access:
                  provider_hint:
                    id: google_workspace
                    name: Google Workspace
                  mx_records:
                  - aspmx.l.google.com
                  services:
                  - service: imap
                    host: imap.gmail.com
                    port: 993
                    source: provider_default
                    priority: null
                    weight: null
                    tls_mode: implicit
                    reachable: true
                    tls_negotiated: true
                    starttls_offered: null
                    protocol: TLSv1.3
                    cipher: TLS_AES_256_GCM_SHA384
                    certificate:
                      subject: /CN=imap.gmail.com
                      issuer: /CN=WR2
                      not_before: '2026-01-01T00:00:00Z'
                      not_after: '2026-07-01T00:00:00Z'
                      days_to_expiry: 70
                      expired: false
                      san_domains:
                      - imap.gmail.com
                      public_key_type: EC
                      public_key_bits: 256
                      fingerprint_sha256: CC:DD:EE:FF
                      hostname_match: true
                      chain_valid: true
                      chain_error: null
                    chain_depth: 2
                    error: null
                  reachable_service_count: 1
                  secure_service_count: 1
                autodiscover:
                  provider_hint:
                    id: google_workspace
                    name: Google Workspace
                  mx_records:
                  - aspmx.l.google.com
                  srv:
                    autodiscover: []
                    submission: []
                    submissions: []
                    imap: []
                    imaps: []
                    pop3: []
                    pop3s: []
                  thunderbird_autoconfig:
                    subdomain:
                      url: https://autoconfig.google.com/mail/config-v1.1.xml?emailaddress=postmaster%40google.com
                      status_code: 404
                      content_type: text/html
                      final_url: https://autoconfig.google.com/mail/config-v1.1.xml?emailaddress=postmaster%40google.com
                      redirect_count: 0
                      incoming: []
                      outgoing: []
                      error: null
                    well_known:
                      url: https://google.com/.well-known/autoconfig/mail/config-v1.1.xml?emailaddress=postmaster%40google.com
                      status_code: 200
                      content_type: application/xml
                      final_url: https://google.com/.well-known/autoconfig/mail/config-v1.1.xml?emailaddress=postmaster%40google.com
                      redirect_count: 0
                      incoming:
                      - type: imap
                        hostname: imap.gmail.com
                        port: 993
                        socket_type: SSL
                      outgoing:
                      - type: smtp
                        hostname: smtp.gmail.com
                        port: 587
                        socket_type: STARTTLS
                      error: null
                  outlook_autodiscover:
                    url: https://autodiscover.google.com/autodiscover/autodiscover.xml
                    status_code: 401
                    content_type: text/html
                    final_url: https://autodiscover.google.com/autodiscover/autodiscover.xml
                    redirect_count: 0
                    auth_required: true
                    error: null
                  recommended:
                  - service: imap
                    host: imap.gmail.com
                    port: 993
                    tls_mode: implicit
                    source: provider_default
                edge_summary:
                  relay_configured: true
                  evidence_sources:
                  - spf_walk
                  - mail_policies
                  - bimi_audit
                  - dkim_audit
                  - mail_client_access
                  - mail_autodiscover
                  spf_lookup_count: 1
                  spf_lookup_limit_exceeded: false
                  dkim_valid_selector_count: 1
                  dkim_weak_selector_count: 0
                  dkim_revoked_selector_count: 0
                  providers_detected:
                  - Google Workspace
                  mta_sts_enforced: true
                  tls_rpt_configured: true
                  bimi_logo_verified: true
                  vmc_certificate_valid: true
                  client_access_reachable_services: 1
                  client_access_secure_services: 1
                  autodiscover_recommendation_count: 1
                provider_selector_recommendations:
                - provider: Google Workspace
                  selectors:
                  - google
                  - '20230601'
                  - '20210112'
                  source: detected
                  checked_selectors:
                  - google
                  found_selectors:
                  - google
                  missing_selectors:
                  - '20230601'
                  - '20210112'
                grade: A
                notes: []
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-domscan-credits:
        model: per_request
        default: 3
  /v1/similarity:
    get:
      tags:
      - OSINT
      summary: Domain similarity check
      description: Compare two domains for visual/textual similarity
      operationId: getDomainSimilarity
      parameters:
      - name: domain1
        description: First domain to compare. The alias source is also accepted.
        in: query
        required: true
        schema:
          type: string
      - name: domain2
        description: Second domain to compare. The alias target is also accepted.
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Similarity analysis
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimilarityResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-domscan-credits:
        model: per_request
        default: 2
  /v1/mac:
    get:
      tags:
      - OSINT
      summary: MAC address lookup
      description: Identify device manufacturer from MAC address
      operationId: getMacInfo
      parameters:
      - name: mac
        in: query
        required: true
        description: MAC address (any format)
        schema:
          type: string
          example: 00:1A:2B:3C:4D:5E
      responses:
        '200':
          description: MAC vendor information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MacInfoResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: Vendor evidence is temporarily unavailable. The request is refunded and can be retried.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: UPSTREAM_UNAVAILABLE
                  message: MAC vendor lookup temporarily unavailable
      x-domscan-credits:
        model: per_request
        default: 1
  /v1/mac/info:
    get:
      tags:
      - OSINT
      summary: Get MAC lookup endpoint details
      description: Returns parameter help and an example response for the MAC address lookup endpoint.
      operationId: getMacLookupInfo
      responses:
        '200':
          description: MAC endpoint reference
          content:
            application/json:
              schema:
                type: object
                properties:
                  endpoint:
                    type: string
                  description:
                    type: string
                  parameters:
                    type: object
                  example_request:
                    type: string
                  example_response:
                    type: object
              example:
                endpoint: /v1/mac
                description: Lookup MAC address metadata and vendor information.
                parameters:
                  mac:
                    type: string
                    required: true
                    description: MAC address string in any common format
                    example: 44:38:39:ff:ef:57
                example_request: /v1/mac?mac=44:38:39:ff:ef:57
                example_response:
                  mac: 44:38:39:FF:EF:57
                  type: eui-48
                  oui: '44:38:39'
                  device_id: FF:EF:57
                  flags:
                    multicast: false
                    locally_administered: false
                    broadcast: false
                  vendor:
                    name: Cumulus Networks, Inc
                    found: true
                    source: cache
                    cached: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-domscan-credits:
        model: per_request
        default: 0
  /v1/report:
    get:
      tags:
      - OSINT
      summary: Comprehensive domain report
      description: Full domain intelligence report combining all available data
      operationId: getFullReport
      parameters:
      - name: domain
        description: Domain to build the combined report for.
        in: query
        required: true
        schema:
          type: string
      - name: sections
        in: query
        required: false
        description: Comma-separated report sections to include.
        schema:
          type: string
          example: availability,dns,whois,ssl
      responses:
        '200':
          description: Comprehensive report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FullReportResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-domscan-credits:
        model: per_request
        default: 5
components:
  schemas:
    SimilarityResponse:
      type: object
      description: Domain similarity analysis
      properties:
        domain1:
          type: string
        domain2:
          type: string
        overall_similarity:
          type: number
          minimum: 0
          maximum: 100
        risk_level:
          type: string
          enum:
          - none
          - low
          - medium
          - high
          - critical
        analysis:
          type: object
          properties:
            levenshtein_distance:
              type: integer
            levenshtein_similarity:
              type: number
              minimum: 0
              maximum: 100
            jaro_winkler_similarity:
              type: number
              minimum: 0
              maximum: 100
            visual_similarity:
              type: number
              minimum: 0
              maximum: 100
            keyboard_distance:
              type: number
            common_prefix_length:
              type: integer
            common_suffix_length:
              type: integer
        matching_methods:
          type: array
          items:
            type: string
        is_potential_typosquat:
          type: boolean
        checked_at:
          type: string
          format: date-time
        meta:
          type: object
          additionalProperties: true
    SpfLookupTree:
      type: object
      description: Recursive SPF lookup graph with per-node status, includes, redirects, and cycle/limit visibility.
      properties:
        root_domain:
          type: string
        node_count:
          type: integer
        max_depth:
          type: integer
        cycles_detected:
          type: array
          items:
            type: string
        nodes:
          type: array
          items:
            type: object
            properties:
              domain:
                type: string
              depth:
                type: integer
              status:
                type: string
                enum:
                - present
                - missing
                - cycle
                - error
                - limit_exceeded
              direct_lookup_count:
                type: integer
              total_lookup_count:
                type: integer
              includes:
                type: array
                items:
                  type: string
              redirect:
                type:
                - string
                - 'null'
              mechanisms:
                type: array
                items:
                  type: string
              errors:
                type: array
                items:
                  type: string
        edges:
          type: array
          items:
            type: object
            properties:
              from:
                type: string
              to:
                type: string
              type:
                type: string
                enum:
                - include
                - redirect
    EmailAuthResponse:
      type: object
      description: Email authentication (SPF/DKIM/DMARC) status with BIMI/VMC, MTA-STS, and TLS-RPT checks
      properties:
        domain:
          type: string
        spf:
          type: object
          properties:
            record:
              type:
              - string
              - 'null'
            lookup_estimate:
              type: integer
            includes:
              type: array
              items:
                type: string
            redirect:
              type:
              - string
              - 'null'
            macros_present:
              type: boolean
            macro_references:
              type: array
              items:
                type: string
            lookup_walk_count:
              type: integer
            lookup_limit_exceeded:
              type: boolean
            walk:
              type: array
              description: Extended recursive SPF analysis with macro detection.
              items:
                type: object
                properties:
                  domain:
                    type: string
                  depth:
                    type: integer
                  record:
                    type: string
                  mechanisms:
                    type: array
                    items:
                      type: string
                  includes:
                    type: array
                    items:
                      type: string
                  redirect:
                    type:
                    - string
                    - 'null'
                  direct_lookup_count:
                    type: integer
                  total_lookup_count:
                    type: integer
                  macros_present:
                    type: boolean
                  macro_references:
                    type: array
                    items:
                      type: string
                  multiple_records:
                    type: integer
            walk_errors:
              type: array
              items:
                type: string
            lookup_tree:
              $ref: '#/components/schemas/SpfLookupTree'
        dkim:
          type: array
          items:
            type: object
            properties:
              selector:
                type: string
              record:
                type:
                - string
                - 'null'
              key_type:
                type:
                - string
                - 'null'
              key_size:
                type:
                - integer
                - 'null'
        dkim_audit:
          type: object
          description: Extended DKIM selector discovery and key-strength audit.
          properties:
            selectors_checked:
              type: array
              items:
                type: string
            selectors_found:
              type: array
              items:
                type: object
                properties:
                  selector:
                    type: string
                  dns_name:
                    type: string
                  record:
                    type:
                    - string
                    - 'null'
                  record_type:
                    type:
                    - string
                    - 'null'
                    enum:
                    - TXT
                    - CNAME
                  cname_targets:
                    type: array
                    items:
                      type: string
                  provider_hint:
                    type:
                    - string
                    - 'null'
                  key_type:
                    type:
                    - string
                    - 'null'
                  key_size:
                    type:
                    - integer
                    - 'null'
                  valid:
                    type: boolean
                  revoked:
                    type: boolean
                  weak:
                    type: boolean
                  hash_algorithms:
                    type: array
                    items:
                      type: string
                  service_type:
                    type:
                    - string
                    - 'null'
                  flags:
                    type: array
                    items:
                      type: string
                  issues:
                    type: array
                    items:
                      type: string
            total_found:
              type: integer
            providers_detected:
              type: array
              items:
                type: string
            valid_selector_count:
              type: integer
            weak_selector_count:
              type: integer
            revoked_selector_count:
              type: integer
        bimi:
          type: object
          description: Extended BIMI logo and VMC validation.
          properties:
            exists:
              type: boolean
            record:
              type:
              - string
              - 'null'
            valid:
              type: boolean
            logo_url:
              type:
              - string
              - 'null'
            authority_url:
              type:
              - string
              - 'null'
            logo_fetch_ok:
              type:
              - boolean
              - 'null'
            logo_http_status:
              type:
              - integer
              - 'null'
            logo_content_type:
              type:
              - string
              - 'null'
            logo_bytes:
              type:
              - integer
              - 'null'
            logo_svg_detected:
              type:
              - boolean
              - 'null'
            vmc_present:
              type: boolean
            vmc_fetched:
              type:
              - boolean
              - 'null'
            vmc_http_status:
              type:
              - integer
              - 'null'
            vmc_content_type:
              type:
              - string
              - 'null'
            vmc_certificate_valid:
              type:
              - boolean
              - 'null'
            vmc_subject:
              type:
              - string
              - 'null'
            vmc_issuer:
              type:
              - string
              - 'null'
            vmc_not_before:
              type:
              - string
              - 'null'
              format: date-time
            vmc_not_after:
              type:
              - string
              - 'null'
              format: date-time
            vmc_days_to_expiry:
              type:
              - integer
              - 'null'
            vmc_fingerprint_sha256:
              type:
              - string
              - 'null'
            vmc_san_domains:
              type: array
              items:
                type: string
            errors:
              type: array
              items:
                type: string
        dmarc:
          type: object
    

# --- truncated at 32 KB (59 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/domscan/refs/heads/main/openapi/domscan-osint-api-openapi.yml