{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "slug": "contactsplus",
    "name": "ContactsPlus",
    "vendor": "Contacts Plus LLC",
    "vendorUrl": "https://www.contactsplus.com",
    "kind": "http-api",
    "category": "contacts",
    "summary": "ContactsPlus (Contacts+) is a contact manager that syncs, deduplicates and enriches address books across Google, iCloud and Outlook. Agents reach it through an OAuth REST Contacts API with webhooks and a remote MCP server for Premium users.",
    "url": "https://www.anchorterminal.com/tools/contactsplus",
    "markdownUrl": "https://www.anchorterminal.com/tools/contactsplus.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/contactsplus.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/contactsplus.json",
    "license": "Proprietary service under the ContactsPlus Terms of Use (version 2.0, 26 June 2026). The old Node and Clojure API clients are archived",
    "transports": [
      "http"
    ],
    "remoteUrl": "https://api.contactsplus.com/api/v1",
    "packages": [
      {
        "registry": "npm",
        "name": "contacts-api-node"
      }
    ],
    "auth": "oauth",
    "authNotes": "The REST API uses OAuth 2.0 with an app registered at ui.contactsplus.com/apps, a client ID and secret, and 10 comma-separated scopes (account.read, contacts.read, contacts.write, tags.read, tags.write, teams.read and team variants). Refresh tokens are long-lived. The MCP server at https://mcp.contactsplus.com/mcp uses OAuth with PKCE (S256) and dynamic client registration, and the user picks Read only or Full access when connecting.",
    "pricing": "freemium",
    "pricingNotes": "Free plan at $0 with no credit card (1 synced account, 1,000 contacts, daily sync). Premium from $9.99 a month billed annually or $13.99 monthly (5 accounts, 25,000 contacts). Teams from $12.99 a user a month annually or $17.99 monthly. The MCP integration needs Premium. The developer page says the API is free to start and names no API price (https://www.contactsplus.com/pricing/, checked 2026-10-14).",
    "priceSummary": "$9.99 / mo",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the developer pages, the MCP page or the pricing page (checked 2026-10-14).",
      "endpoints": []
    },
    "toolCount": 7,
    "popularity": {
      "githubStars": null,
      "npmWeekly": 13,
      "pypiWeekly": null,
      "asOf": "2026-10-14"
    },
    "docsUrl": "https://www.contactsplus.com/developers/contacts-api/",
    "llmsTxt": "https://www.contactsplus.com/llms.txt",
    "capabilities": [
      "contacts.read",
      "contacts.write",
      "contacts.search",
      "contacts.sync",
      "contacts.groups"
    ],
    "tags": [
      "hosted",
      "freemium",
      "mcp",
      "oauth",
      "webhooks",
      "llms-txt",
      "consumer"
    ],
    "lastRelease": "2026-09-28",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 42.4,
      "grade": "E",
      "agentReady": false,
      "rank": 966,
      "ranked": true,
      "rankOf": 1076,
      "categoryRank": 3,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 42,
        "maintenance": 25,
        "payments": 30,
        "reliability": 28,
        "schema": 38,
        "security": 71,
        "transparency": 62
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 28,
          "points": 5.6,
          "reason": "Graded with the hosted lines, on the REST API and the MCP server. The status page at /status/ is a static page listing seven services, last updated 26 June 2026, with no component history (10 of 20). It says no incidents in the past 90 days, but a page last updated in June can't show that (5). No rate limits found in the API reference (0). No 429 or retry guidance. Update and delete take an etag, which guards against overwriting a newer record (3 of 15). No SLA found (0). Neither the API nor the MCP server carries a beta label (10)."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 38,
          "points": 6.18,
          "reason": "No OpenAPI or other machine-readable contract, and the MCP tool schemas couldn't be read without signing in (0). A site llms.txt lists the developer pages, but the API reference isn't served as Markdown (5 of 10). The reference says what each call does in a line or two, and the MCP page says which tools read, propose or apply (12 of 20). Fields are typed in the docs, with no enums for labels or webhook triggers (8 of 15). curl, Clojure and JavaScript examples for every call, but no documented error responses (8 of 15). Versioned paths under /api/v1 and /v3/oauth, with no changelog (5 of 15)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 42,
          "points": 6.83,
          "reason": "No field selection. contacts.scroll takes a size, and MCP reads are paged and capped (12 of 25). Cursor paging on scroll and search, tag filters and team scoping (15 of 20). Error responses aren't documented (0). etags on update and delete, Create Tag returns an existing tag rather than a duplicate, and MCP writes wait in Suggestions for approval. MCP annotations couldn't be checked (12 of 20). The only clients, for Node and Clojure, were last published in 2020 and are archived (3 of 15)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 71,
          "points": 12.43,
          "reason": "OAuth 2.0 with 10 scopes that split reads from writes for contacts, tags and team data. The MCP server uses OAuth with PKCE and dynamic client registration (30). The MCP server has Read only and Full access modes, can't delete or export, and holds field changes, notes and new contacts for the owner's approval value by value. Only tagging applies at once (20). It never fetches links or reads images, but no prompt-injection guidance was found for contact text (8 of 15). The Suggestions queue shows each proposed change, with no audit log found for API calls (5 of 15). A responsible disclosure policy with security@contactsplus.com and OpenBugBounty and discretionary bounties, no security.txt and no SOC 2 or ISO 27001 found (8 of 20)."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 30,
          "points": 3.75,
          "reason": "No x402, MPP or L402 (0). Plan prices are public, but no API price is named and the MCP needs Premium (10). A free plan with no credit card, and the developer page says the API is free to start (20). A person signs up and registers an app in a browser (0)."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 25,
          "points": 2.19,
          "reason": "The AI assistants (MCP) page was last modified on 28 September 2026 per the sitemap, and the terms and privacy policy on 26 June 2026. No dated release was found, so this is a soft signal (20). No changelog, so no dated releases to count (0). A help centre and support address but no public changelog or developer forum (5 of 15). The API clients are archived and last released in 2020 (0). No current package or CI to check (0)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 62,
          "points": 5.43,
          "note": "editorial 48, provenance 75",
          "reason": "Closed service under terms dated 26 June 2026, which grant developers an API licence (15). The privacy policy and security page agree on retention of up to five years after last use, deletion on request, AES-256 at rest and AWS hosting, and disclose that contacts are combined with other users' data and public sources, with an opt-out (20 of 30). Terms promise 30 days' notice of material changes, with no API deprecation policy found (5 of 20). Stripe, Google Analytics and AWS are named, but no sub-processor list was found (8 of 20)."
        }
      ],
      "assessment": {
        "date": "2026-10-14",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "No field selection. contacts.scroll takes a size, and MCP reads are paged and capped (12 of 25). Cursor paging on scroll and search, tag filters and team scoping (15 of 20). Error responses aren't documented (0). etags on update and delete, Create Tag returns an existing tag rather than a duplicate, and MCP writes wait in Suggestions for approval. MCP annotations couldn't be checked (12 of 20). The only clients, for Node and Clojure, were last published in 2020 and are archived (3 of 15).",
          "maintenance": "The AI assistants (MCP) page was last modified on 28 September 2026 per the sitemap, and the terms and privacy policy on 26 June 2026. No dated release was found, so this is a soft signal (20). No changelog, so no dated releases to count (0). A help centre and support address but no public changelog or developer forum (5 of 15). The API clients are archived and last released in 2020 (0). No current package or CI to check (0).",
          "payments": "No x402, MPP or L402 (0). Plan prices are public, but no API price is named and the MCP needs Premium (10). A free plan with no credit card, and the developer page says the API is free to start (20). A person signs up and registers an app in a browser (0).",
          "reliability": "Graded with the hosted lines, on the REST API and the MCP server. The status page at /status/ is a static page listing seven services, last updated 26 June 2026, with no component history (10 of 20). It says no incidents in the past 90 days, but a page last updated in June can't show that (5). No rate limits found in the API reference (0). No 429 or retry guidance. Update and delete take an etag, which guards against overwriting a newer record (3 of 15). No SLA found (0). Neither the API nor the MCP server carries a beta label (10).",
          "schema": "No OpenAPI or other machine-readable contract, and the MCP tool schemas couldn't be read without signing in (0). A site llms.txt lists the developer pages, but the API reference isn't served as Markdown (5 of 10). The reference says what each call does in a line or two, and the MCP page says which tools read, propose or apply (12 of 20). Fields are typed in the docs, with no enums for labels or webhook triggers (8 of 15). curl, Clojure and JavaScript examples for every call, but no documented error responses (8 of 15). Versioned paths under /api/v1 and /v3/oauth, with no changelog (5 of 15).",
          "security": "OAuth 2.0 with 10 scopes that split reads from writes for contacts, tags and team data. The MCP server uses OAuth with PKCE and dynamic client registration (30). The MCP server has Read only and Full access modes, can't delete or export, and holds field changes, notes and new contacts for the owner's approval value by value. Only tagging applies at once (20). It never fetches links or reads images, but no prompt-injection guidance was found for contact text (8 of 15). The Suggestions queue shows each proposed change, with no audit log found for API calls (5 of 15). A responsible disclosure policy with security@contactsplus.com and OpenBugBounty and discretionary bounties, no security.txt and no SOC 2 or ISO 27001 found (8 of 20).",
          "transparency": "Closed service under terms dated 26 June 2026, which grant developers an API licence (15). The privacy policy and security page agree on retention of up to five years after last use, deletion on request, AES-256 at rest and AWS hosting, and disclose that contacts are combined with other users' data and public sources, with an opt-out (20 of 30). Terms promise 30 days' notice of material changes, with no API deprecation policy found (5 of 20). Stripe, Google Analytics and AWS are named, but no sub-processor list was found (8 of 20)."
        },
        "sources": [
          {
            "what": "developers page",
            "url": "https://www.contactsplus.com/developers/",
            "seen": "2026-10-14"
          },
          {
            "what": "Contacts API reference",
            "url": "https://www.contactsplus.com/developers/contacts-api/",
            "seen": "2026-10-14"
          },
          {
            "what": "AI assistants (MCP) page",
            "url": "https://www.contactsplus.com/integrations/ai-assistants/",
            "seen": "2026-10-14"
          },
          {
            "what": "MCP protected-resource and authorisation server metadata",
            "url": "https://mcp.contactsplus.com/.well-known/oauth-protected-resource",
            "seen": "2026-10-14"
          },
          {
            "what": "pricing",
            "url": "https://www.contactsplus.com/pricing/",
            "seen": "2026-10-14"
          },
          {
            "what": "status page",
            "url": "https://www.contactsplus.com/status/",
            "seen": "2026-10-14"
          },
          {
            "what": "security page",
            "url": "https://www.contactsplus.com/security/",
            "seen": "2026-10-14"
          },
          {
            "what": "terms of use",
            "url": "https://www.contactsplus.com/terms/",
            "seen": "2026-10-14"
          },
          {
            "what": "privacy policy",
            "url": "https://www.contactsplus.com/privacy/",
            "seen": "2026-10-14"
          },
          {
            "what": "npm contacts-api-node",
            "url": "https://registry.npmjs.org/contacts-api-node",
            "seen": "2026-10-14"
          },
          {
            "what": "site llms.txt",
            "url": "https://www.contactsplus.com/llms.txt",
            "seen": "2026-10-14"
          }
        ],
        "openQuestions": [
          "unchecked: the MCP tool definitions and annotations, which need a signed-in session",
          "Why the MCP server's metadata advertises only read scopes when a Full access mode is described",
          "unchecked: whether the REST API is available on the free plan without limits, since the pricing page doesn't mention it",
          "unchecked: when the MCP server launched, since no dated announcement or changelog was found"
        ]
      },
      "negative": 0,
      "verdict": "An address book that already merges Google, iCloud and Outlook contacts, reachable through OAuth scopes split by read and write and an MCP server that cannot delete or export and holds edits for the owner's approval. The REST reference has no rate limits, error codes or changelog, and its client libraries were archived in 2023.",
      "bestFor": "Agents serving one person or a small team whose contacts are spread across Google, iCloud and Outlook.",
      "strengths": [
        "One API over contacts synced from Google, iCloud and Outlook",
        "MCP server can't delete or export, and edits wait for the owner's approval",
        "Read only or Full access chosen at connection, with OAuth PKCE and dynamic client registration",
        "Separate read and write scopes for contacts, tags and team data",
        "Free plan with no card, and webhooks for contact changes"
      ],
      "weaknesses": [
        "No rate limits, error responses or changelog in the API reference",
        "No OpenAPI spec, and MCP tool schemas aren't public",
        "Node and Clojure clients last released in 2020 and archived",
        "Status page is a static page last updated 26 June 2026",
        "MCP access needs the Premium plan"
      ],
      "agentNotes": [
        "Pass the contact's current etag on update and delete, or the call will be refused",
        "Use contacts.scroll with includeDeletedContacts to keep a copy in step, or subscribe to webhooks",
        "Tell the user that MCP edits land in Suggestions and need their approval",
        "Ask only for contacts.read and tags.read when the task is lookup",
        "Search with field criteria such as company:Acme AND title:CTO to keep results small"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "E",
          "methodology": "0.4",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 42.4
        }
      ],
      "editorialScores": {
        "ergonomics": 42,
        "maintenance": 25,
        "payments": 30,
        "reliability": 28,
        "schema": 38,
        "security": 71,
        "transparency": 48
      },
      "provenanceScore": 75
    },
    "connect": {
      "http": "curl -X POST https://api.contactsplus.com/api/v1/contacts.search \\\n  -H \"Authorization: Bearer $access_token\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"searchQuery\": \"company:Contacts+\"}'",
      "config": {
        "mcpServers": {
          "contactsplus": {
            "url": "https://mcp.contactsplus.com/mcp"
          }
        }
      }
    },
    "letme": {
      "capability": "https://letme.dev/contacts.read",
      "tool": "https://letme.dev/contactsplus"
    },
    "notable": [
      "The MCP server has three reads (Find Contact, Read Briefing, List Tags) and four actions. Suggest Contact Update, Add Contact and Append Note wait for the owner's approval, and Tag Contact applies to up to 25 contacts straight away (https://www.contactsplus.com/integrations/ai-assistants/)",
      "ContactsPlus says the assistant can never delete a contact or export the address book, reads are paged and capped, and it never fetches links or reads images (https://www.contactsplus.com/integrations/ai-assistants/)",
      "The MCP server's protected-resource metadata advertises only the contacts.read and tags.read scopes, though the product page describes a Full access mode (https://mcp.contactsplus.com/.well-known/oauth-protected-resource)",
      "The REST API's update and delete calls take the record's etag, and Create Tag returns the existing ID if the tag already exists (https://www.contactsplus.com/developers/contacts-api/)",
      "The privacy policy says ContactsPlus combines users' contacts with other users' data and public sources into Completed Contact Data, with an opt-out (https://www.contactsplus.com/privacy/)"
    ],
    "area": "everyday",
    "details": [
      {
        "label": "REST endpoints",
        "value": "POST-style RPC calls under /api/v1, such as account.get, contacts.get, contacts.scroll, contacts.search, contacts.create, contacts.update, contacts.delete, contacts.uploadPhoto, contacts.manageTags, tags.*, teams.get and webhooks.*"
      },
      {
        "label": "Search",
        "value": "Full-text search with field criteria and AND or OR, such as firstName:John AND company:Contacts+, with a cursor for more results"
      },
      {
        "label": "Sync",
        "value": "contacts.scroll with a cursor and includeDeletedContacts, and webhooks with batches kept for 14 days"
      },
      {
        "label": "MCP server",
        "value": "https://mcp.contactsplus.com/mcp, OAuth with PKCE and dynamic client registration, 3 reads and 4 actions, Read only or Full access, Premium plan"
      },
      {
        "label": "Sources synced",
        "value": "Google Contacts, iCloud and Microsoft or Outlook, with approved changes written back"
      },
      {
        "label": "Status",
        "value": "A static page at www.contactsplus.com/status/ with seven services, last updated 26 June 2026"
      }
    ],
    "unitPrices": [
      {
        "item": "Premium plan",
        "unit": "month",
        "usd": 9.99,
        "note": "Billed annually ($119.88 a year), or $13.99 monthly. Needed for the MCP integration"
      },
      {
        "item": "Teams plan",
        "unit": "seat-month",
        "usd": 12.99,
        "note": "Billed annually, or $17.99 monthly, up to 50 members"
      }
    ],
    "provenance": {
      "legalEntity": "Contacts Plus LLC",
      "domain": "contactsplus.com",
      "domainRegistered": "1998-02-25",
      "endpointOnVendorDomain": true,
      "terms": "https://www.contactsplus.com/terms/",
      "privacy": "https://www.contactsplus.com/privacy/",
      "statusPage": "https://www.contactsplus.com/status/",
      "changelog": "",
      "securityTxt": "none",
      "checked": "2026-10-14",
      "notes": [
        "The terms (version 2.0, 26 June 2026) name Contacts Plus LLC, a Delaware limited liability company at 3636 S. Geyer Road, Suite 100, Saint Louis, MO 63127.",
        "www.contactsplus.com/.well-known/security.txt answers with an HTML page, not a security.txt file. The security page names security@contactsplus.com and OpenBugBounty.",
        "The REST API answers at api.contactsplus.com and the MCP server at mcp.contactsplus.com.",
        "The API clients on npm and GitHub sit under the fullcontact organisation, and the GitHub repository was archived in 2023.",
        "RDAP gives contactsplus.com a registration date of 1998-02-25."
      ],
      "score": 75,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Contacts Plus LLC",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "contactsplus.com, registered 1998-02-25 (28 years)",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "api.contactsplus.com",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 4 of the 7 things a reader expects, and has 1 clause that costs points",
          "points": 5.4,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 8 of the 8 things a reader expects",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Status page",
          "value": "www.contactsplus.com/status",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://www.contactsplus.com/terms/",
          "state": "read",
          "readAt": "2026-10-14",
          "statedDate": "2026-06-26",
          "words": 3106,
          "points": 5.4,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Version 2.0 · Last updated: June 26, 2026",
              "says": "Last updated 2026-06-26"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": false
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "Our total liability for damages arising from this Agreement or the Services (for any cause, regardless of the form of action) is limited to the greater of: (a) $50;",
              "says": "Capped at $50"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "We may modify, suspend, or discontinue the Services (or parts thereof) at our discretion."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": false
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "You shall not use it to determine eligibility for: (a) credit or insurance for personal purposes;"
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": false
            }
          ],
          "toKnow": [
            {
              "key": "terms.benchmark",
              "label": "Restricts benchmarking or competitive use",
              "found": true,
              "quote": "access the Services to build a similar or competitive service;",
              "costsPoints": true
            },
            {
              "key": "terms.arbitration",
              "label": "Requires arbitration or waives class actions",
              "found": true,
              "quote": "Arbitration: disputes are subject to binding arbitration under the Federal Arbitration Act, conducted by a single AAA arbitrator under the AAA Commercial Arbitration Rules (and Consumer-Related Disputes Procedures, if applicable)."
            }
          ],
          "notes": [
            {
              "date": "2026-10-14",
              "text": "ContactsPlus caps its total liability at the greater of 50 US dollars or the amounts paid in the prior 12 months.",
              "quote": "Our total liability for damages arising from this Agreement or the Services (for any cause, regardless of the form of action) is limited to the greater of: (a) $50; or (b) the amounts you paid us in the prior 12 months (if any)."
            },
            {
              "date": "2026-10-14",
              "text": "Any claim must be brought within one year of the event giving rise to it, or it is permanently barred.",
              "quote": "To the fullest extent permitted by applicable law, any claim arising out of or relating to this Agreement or the Services must be brought within one (1) year after the event giving rise to the claim; otherwise, the claim is permanently barred."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://www.contactsplus.com/privacy/",
          "state": "read",
          "readAt": "2026-10-14",
          "statedDate": "2026-06-26",
          "words": 3859,
          "points": 10,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last updated: June 26, 2026",
              "says": "Last updated 2026-06-26"
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "This Privacy Policy governs how we collect, use, disclose, and protect your personal information, as defined under GDPR Article 4(1) and CCPA Section 1798.140 — including End User Contact Data and Completed Contact Data (as defined in our Terms of Use, Section 4) — in connection with your access to and use of our webs…"
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "Typically, data is retained for up to 5 years after last update or use, unless you request deletion.",
              "says": "Names a period of 5 years"
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "Contacts are collected via connected services you authorize (e.g., email providers, social networks, calendars), direct entry or edits via the Site or App (including voice interfaces), our APIs, uploaded files, third-party applications, contact extraction features (e.g., business-card scanning or email-signature extra…"
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "Contacts Plus LLC, a Delaware limited liability company with offices at 3636 S."
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "How Contacts Plus LLC collects, uses, shares, and protects your personal information and contact data — and the privacy rights you have under GDPR, the CCPA/CPRA, and other applicable laws."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": true,
              "quote": "For inquiries, contact us at support@contactsplus.com or, for GDPR-related requests, our Data Protection Officer at dpo@contactsplus.com.",
              "says": "support@contactsplus.com"
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "Transfers to providers in regions such as Europe, India, or the Americas are protected by Standard Contractual Clauses or Standard Contractual Clauses, per GDPR Article 46 (see Section 8).",
              "says": "Relies on standard contractual clauses"
            }
          ],
          "toKnow": [
            {
              "key": "privacy.sells",
              "label": "Says it sells personal data or shares it for advertising",
              "found": true,
              "quote": "With your consent, we may share pseudonymized data (e.g., cryptographically hashed emails) with social media platforms (e.g., Google) to generate leads or promote the Services."
            }
          ],
          "notes": [
            {
              "date": "2026-10-14",
              "text": "Contacts a user uploads are combined with other users' data and public sources to build Completed Contact Data for deduplication and enrichment.",
              "quote": "We combine your Contacts and relationship information with other Users’ data and public sources to create Completed Contact Data for enhanced features"
            }
          ]
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/contactsplus.json",
    "live": {
      "slug": "contactsplus",
      "probe": {
        "target": "https://api.contactsplus.com/api/v1",
        "method": "get",
        "lastAt": "2026-10-14T09:41:47.032434985Z",
        "lastOk": true,
        "lastStatus": 404,
        "lastMs": 337,
        "authRequired": false,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 337,
        "p95ms24h": 416,
        "samples24h": 17,
        "samples30d": 17,
        "days": [
          {
            "date": "2026-10-14",
            "probes": 17,
            "ok": 17
          }
        ]
      },
      "vendorStatus": {
        "page": "https://www.contactsplus.com/status",
        "indicator": "unknown",
        "summary": "no machine-readable status found",
        "checkedAt": "2026-10-14T08:52:59.734792189Z"
      },
      "updatedAt": "2026-10-14T09:41:47.032434985Z"
    }
  }
}
