DataForSEO · Authentication Profile

Dataforseo Authentication

Authentication

DataForSEO secures its APIs with http and oauth2 across 3 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).

SEOSERPKeywordsBacklinksDomain AnalyticsOn-Page SEOCompetitor ResearchSearch EnginesContent AnalysisE-CommerceApp StoreBusiness DataAI OptimizationSocial-Media
Methods: http, oauth2 Schemes: 3 OAuth flows: authorizationCode API key in:

Security Schemes

basicAuth http
scheme: basic
oauth2 oauth2
· flows: authorizationCode
env-credentials http
scheme: basic

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: openapi/*.yml (12 documents)
docs: https://docs.dataforseo.com/v3/auth/
probed:
  - {url: 'https://api.dataforseo.com/v3/appendix/user_data (unauthenticated POST)', http_status: 401, fetched: '2026-08-13'}
  - {url: https://data.dataforseo.com/.well-known/oauth-authorization-server, http_status: 200, fetched: '2026-08-13'}
  - {url: https://mcp.dataforseo.com/.well-known/oauth-protected-resource, http_status: 200, fetched: '2026-08-13'}

summary:
  types: [http, oauth2]
  http_schemes: [basic]
  oauth2_flows: [authorizationCode]
  api_key_in: []
  note: >-
    Two distinct surfaces with two distinct auth models. The v3 REST API is HTTP
    Basic ONLY — all 554 operations across all 12 specs declare a single
    `basicAuth` scheme and nothing else. OAuth 2.0 exists only on the hosted MCP
    server, which is a separate host with its own authorization server.

schemes:

  - name: basicAuth
    type: http
    scheme: basic
    surface: REST API (https://api.dataforseo.com, https://sandbox.dataforseo.com)
    header: 'Authorization: Basic base64(login:password)'
    credentials_source: https://app.dataforseo.com/api-access
    registration: https://app.dataforseo.com/register
    realm: DataForSEO REST API
    notes:
      - >-
        The API password is generated by DataForSEO and is different from the
        account password.
      - Credentials cannot be passed as URL parameters.
      - >-
        No separate authentication call exists — there is no token endpoint on
        the REST API; credentials accompany every request.
      - >-
        The same credentials work against the free sandbox host; there is no
        test-vs-live key separation.
      - >-
        Account verification (email and/or phone) is required before API access
        (status_code 40104).
      - >-
        IP whitelisting is available in the account dashboard and is enforced
        with status_code 40207.
    sources:
      - openapi/dataforseo-aioptimization-api-openapi.yml
      - openapi/dataforseo-appdata-api-openapi.yml
      - openapi/dataforseo-appendix-api-openapi.yml
      - openapi/dataforseo-backlinks-api-openapi.yml
      - openapi/dataforseo-businessdata-api-openapi.yml
      - openapi/dataforseo-contentanalysis-api-openapi.yml
      - openapi/dataforseo-dataforseolabs-api-openapi.yml
      - openapi/dataforseo-domainanalytics-api-openapi.yml
      - openapi/dataforseo-keywordsdata-api-openapi.yml
      - openapi/dataforseo-merchant-api-openapi.yml
      - openapi/dataforseo-onpage-api-openapi.yml
      - openapi/dataforseo-serp-api-openapi.yml

  - name: oauth2
    type: oauth2
    surface: MCP server (https://mcp.dataforseo.com)
    issuer: https://data.dataforseo.com
    flows:
      - flow: authorizationCode
        authorizationUrl: https://data.dataforseo.com/oauth/authorize
        tokenUrl: https://data.dataforseo.com/oauth/token
        refreshable: true
        scopes: {api: Access to the DataForSEO API, profile: Access to the account profile}
    pkce: [S256]
    token_endpoint_auth_methods: [none]
    dynamic_client_registration: https://data.dataforseo.com/oauth/clients/register
    revocation: https://data.dataforseo.com/oauth/tokens/revoke
    bearer_methods_supported: [header]
    discovery:
      authorization_server_metadata: https://data.dataforseo.com/.well-known/oauth-authorization-server
      protected_resource_metadata: https://mcp.dataforseo.com/.well-known/oauth-protected-resource
    sources:
      - well-known/dataforseo-oauth-authorization-server.json
      - well-known/dataforseo-oauth-protected-resource.json
    note: >-
      Not declared in any OpenAPI document — discovered by probing the MCP host's
      RFC 9728 metadata and the authorization server's RFC 8414 metadata.

  - name: env-credentials
    type: http
    scheme: basic
    surface: MCP stdio transport and CLI
    env: [DATAFORSEO_LOGIN, DATAFORSEO_PASSWORD]
    note: >-
      OAuth is not available on stdio or the CLI; those modes require the same
      Basic credentials supplied through environment variables. On the HTTP
      transport, env credentials are the fallback used when no Authorization
      header is present.

auth_errors:
  - {code: 40100, meaning: not authorized / credentials do not match}
  - {code: 40104, meaning: account not verified (email/phone verification required)}
  - {code: 40201, meaning: unusual activity — account access restricted}
  - {code: 40207, meaning: IP not whitelisted}

related:
  - {type: OAuthScopes, url: scopes/dataforseo-scopes.yml}
  - {type: Conventions, url: conventions/dataforseo-conventions.yml}
  - {type: MCPServer, url: mcp/dataforseo-mcp.yml}