{
  "data": {
    "a": {
      "slug": "factorial",
      "name": "Factorial",
      "vendor": "Everyday Software, S.L.",
      "vendorUrl": "https://factorial.com",
      "kind": "http-api",
      "category": "hr",
      "summary": "Factorial is an HR platform from Barcelona for employee records, time off, attendance, payroll data, recruiting and expenses. Agents reach it through a versioned REST API with API keys or OAuth 2.0, webhooks and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/factorial",
      "markdownUrl": "https://www.anchorterminal.com/tools/factorial.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/factorial.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/factorial.json",
      "repo": "https://github.com/factorialco/factorial-api-sdks",
      "license": "Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.factorialhr.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@factorialco/api-client"
        },
        {
          "registry": "pypi",
          "name": "factorial-api-client"
        }
      ],
      "auth": "mixed",
      "authNotes": "A company administrator creates credentials in Factorial's settings, with no registration or approval queue for a company's own use. An API key goes in `x-api-key`, grants every scope and does not expire. OAuth 2.0 apps use the authorisation code grant through Factorial ID (PKCE for public clients), choose from 33 scopes and receive 1-hour company or user tokens with a refresh token. A user token is limited by that employee's permission group. Integrations for other companies must use OAuth, with scopes agreed with Factorial. The MCP server uses OAuth with dynamic client registration and runs as the signed-in employee.",
      "pricing": "paid",
      "pricingNotes": "The pricing page says Factorial starts at $8 per user per month and asks for a tailored quote for everything else. The terms describe a free trial of at most 15 days granted at Factorial's discretion, and the sign-up page is drawn by script, so its conditions were not read. The demo API environment is provisioned by an account manager, so an agent cannot start without a customer account. Factorial One requests through the MCP server consume plan credits (https://factorial.com/pricing, checked 2026-10-08).",
      "priceSummary": "$8 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI definition, the terms or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 7,
        "npmWeekly": 1367,
        "pypiWeekly": 1075,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://apidoc.factorialhr.com",
      "llmsTxt": "https://apidoc.factorialhr.com/llms.txt",
      "openapi": "https://api.factorialhr.com/oas/",
      "capabilities": [
        "hr.employees",
        "hr.time-off",
        "hr.org",
        "hr.documents",
        "recruiting.applications",
        "recruiting.jobs",
        "recruiting.candidates",
        "spend.expenses",
        "tasks.create"
      ],
      "tags": [
        "hosted",
        "paid",
        "sales-led",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "webhooks",
        "sandbox",
        "typescript",
        "python",
        "status-page",
        "sla",
        "bug-bounty",
        "soc2",
        "eu"
      ],
      "lastRelease": "2026-10-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.3,
        "grade": "B",
        "agentReady": false,
        "rank": 239,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 58,
          "maintenance": 84,
          "payments": 10,
          "reliability": 88,
          "schema": 77,
          "security": 65,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.",
        "bestFor": "An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.",
        "strengths": [
          "OpenAPI 3.1.0 definition at `https://api.factorialhr.com/oas/` with 615 operations and 137 webhook events, plus `llms.txt` and a Markdown twin of every docs page",
          "OAuth 2.0 with 33 scopes, PKCE for public clients, 1-hour access tokens and a revoke endpoint. User tokens are bound to an employee's permission group",
          "Time off can be requested, approved and rejected through the API (`/timeoff/leaves/approve` and `/timeoff/leaves/reject`)",
          "Dated API versions ship each quarter and are supported for one year, with release notes that mark removed endpoints and fields",
          "A 99.9 per cent monthly uptime commitment with a 5 per cent service credit is published in the trust centre, and the status page shows no incident since 1 June 2026"
        ],
        "weaknesses": [
          "An API key grants every scope, cannot be narrowed and does not expire",
          "No idempotency keys. The docs say the API does not deduplicate requests, so a blind retry can create a duplicate record",
          "A request to an unsupported API version is served in the oldest supported schema with no error",
          "The only published rate limit is 200 `POST` requests a minute, and no `Retry-After` header is documented",
          "The terms prohibit benchmarking, competitive evaluation and monitoring of availability, and pricing beyond a $8 starting figure is by quote"
        ],
        "agentNotes": [
          "Send an API key in `x-api-key` and an OAuth token in `Authorization: Bearer`. The key is JWT-formatted but is rejected as a bearer token",
          "Pin the version in the path, such as `/api/2026-10-01/resources/...`, and migrate within a year. Expired versions answer in an older schema without an error",
          "Treat a 200 with an empty body as a credential from the other environment. Production is `api.factorialhr.com` and demo is `api.eu2.demo.factorial.dev`",
          "Page with `limit=100` and pass `meta.end_cursor` as `after_id`. A larger limit is capped at 100",
          "Check whether a record exists before retrying a create. Retry only 429 and 5xx with backoff, and branch on `code` for 422 because messages are localised"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.3
          }
        ],
        "editorialScores": {
          "ergonomics": 58,
          "maintenance": 84,
          "payments": 10,
          "reliability": 88,
          "schema": 77,
          "security": 65,
          "transparency": 73
        },
        "provenanceScore": 82
      },
      "connect": {
        "install": "npm install @factorialco/api-client",
        "http": "curl --request GET \\\n     --url 'https://api.factorialhr.com/api/2026-10-01/resources/api_public/credentials' \\\n     --header 'accept: application/json' \\\n     --header 'x-api-key: \u003capi_key\u003e'"
      },
      "letme": {
        "capability": "https://letme.dev/hr.employees",
        "tool": "https://letme.dev/factorial"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Starting price",
          "unit": "seat-month",
          "usd": 8,
          "note": "Headline figure on the pricing page. Plans are quoted by modules and company size"
        }
      ],
      "provenance": {
        "legalEntity": "Everyday Software, S.L.",
        "domain": "factorialhr.com",
        "domainRegistered": "2016-11-10",
        "endpointOnVendorDomain": true,
        "terms": "https://factorial.com/terms-of-use",
        "privacy": "https://factorial.com/privacy",
        "statusPage": "https://status.factorialhr.com",
        "changelog": "https://apidoc.factorialhr.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms and conditions of contract of the Factorial platform (last amended 12 December 2025) name EVERYDAY SOFTWARE, S.L., Carrer de Llacuna 56, Building C, 08005 Barcelona, tax number B-66854530, and its subsidiaries. They govern the platform and mention the public API in clause 13.8. No separate API terms were found.",
          "The privacy policy (last update January 2026) names the same company as controller and describes its role as processor for data that customers' employees enter on the platform. It refers to a Data Processing Agreement that we did not read.",
          "The API answers at api.factorialhr.com, OAuth at id.factorialhr.com and the MCP server at mcp.factorialhr.com. The marketing site factorialhr.com redirects to factorial.com.",
          "RDAP gives 2016-11-10 as the registration date of factorialhr.com and 1998-04-24 for factorial.com.",
          "factorialhr.com/.well-known/security.txt and factorial.com/.well-known/security.txt both returned 404. The trust centre has a vulnerability report form and names a HackerOne programme.",
          "The SLA linked from clause 11.2 of the terms resolves to the trust centre at trust.factorial.co."
        ],
        "score": 82
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/factorial.json",
      "live": {
        "slug": "factorial",
        "probe": {
          "target": "https://api.factorialhr.com",
          "method": "get",
          "lastAt": "2026-10-08T21:12:10.156668384Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 93,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 83,
          "p95ms24h": 165,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.factorialhr.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:04.681965883Z"
        },
        "updatedAt": "2026-10-08T21:12:10.156668384Z"
      }
    },
    "answer": "Factorial scores 66.3 (B) on agent readiness against HiBob's 57 (C), and leads in 5 of 7 scored categories.",
    "b": {
      "slug": "hibob",
      "name": "HiBob",
      "vendor": "Hi Bob Ltd.",
      "vendorUrl": "https://www.hibob.com",
      "kind": "http-api",
      "category": "hr",
      "summary": "Bob is HiBob's HR platform for employee records, time off, attendance, tasks, documents and hiring. Agents reach it through a REST API authenticated with service users, 30 webhook events and a hosted MCP server that uses OAuth.",
      "url": "https://www.anchorterminal.com/tools/hibob",
      "markdownUrl": "https://www.anchorterminal.com/tools/hibob.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/hibob.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/hibob.json",
      "license": "Proprietary service under HiBob's customer subscription terms and API Terms of Use",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.hibob.com/v1",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Access is granted by a customer's Bob admin, with no self-serve route for outsiders. Customer-built integrations use a service user, an ID and token sent as HTTP Basic, which starts with no permissions and gains them through a permission group (product areas, fields by View, View history and Edit, and which employees). OAuth 2.0 authorisation code apps are open only to approved Marketplace and technology partners through the Developer Portal, with 28 scopes, an audience the customer chooses at install, 5-minute access tokens and 30-day refresh tokens. The hosted MCP server uses OAuth as the signed-in employee and follows that person's Bob permissions.",
      "pricing": "paid",
      "pricingNotes": "No public prices. HiBob quotes per employee by company size and chosen modules, and the pricing page asks for a demo or a custom quote. No free tier or trial was found. The API sandbox at api.sandbox.hibob.com is available only to accounts that have bought the Sandbox module, so an agent cannot start without a customer contract (https://www.hibob.com/pricing-plans, checked 2026-10-07).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the API terms or the pricing page (checked 2026-10-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-07"
      },
      "docsUrl": "https://apidocs.hibob.com",
      "llmsTxt": "https://apidocs.hibob.com/llms.txt",
      "capabilities": [
        "hr.employees",
        "hr.time-off",
        "hr.org",
        "hr.onboarding",
        "hr.documents"
      ],
      "tags": [
        "hosted",
        "enterprise",
        "sales-led",
        "api-key",
        "oauth",
        "mcp",
        "llms-txt",
        "openapi",
        "webhooks",
        "sandbox",
        "status-page",
        "bug-bounty",
        "soc2"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57,
        "grade": "C",
        "agentReady": false,
        "rank": 484,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 47,
          "maintenance": 59,
          "payments": 0,
          "reliability": 67,
          "schema": 78,
          "security": 68,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-07"
        },
        "negative": 0,
        "verdict": "Service users start with no permissions and gain view or edit rights per field, and the docs are served as Markdown with an OpenAPI definition on each endpoint page. There is no public price, trial or free sandbox, so an agent needs a paying customer's admin to issue credentials. No idempotency keys or official SDKs were found.",
        "bestFor": "An agent working inside a company that already runs Bob and needs field-level control over employee data, time off requests, documents and tasks.",
        "strengths": [
          "Service users have no permissions by default, and view, edit and history rights are granted per category or field through permission groups",
          "llms.txt index and a Markdown twin of every docs page, with an OpenAPI 3.1.1 definition embedded in each endpoint page",
          "Per-endpoint rate limits are published, and 429 responses carry Retry-After and X-RateLimit headers",
          "Webhooks v2 retry with exponential backoff for up to three days, with signed requests",
          "SOC 2 Type II, ISO 27001:2022, ISO 27018:2019 and a Bugcrowd bug bounty listed on the security page"
        ],
        "weaknesses": [
          "No public price, free tier or trial. The sandbox is a purchased module",
          "People search has no pagination and returns every matching employee in one response",
          "Fields without permission or with invalid IDs are dropped from a 200 response with no warning",
          "No idempotency keys and no official SDK found in the reviewed documentation",
          "MCP setup and tool documentation sit in the help centre, which returned 403 to our reader"
        ],
        "agentNotes": [
          "Send `Authorization: Basic base64(SERVICE-USER-ID:TOKEN)` to https://api.hibob.com/v1. Ask the Bob admin to put the service user in a permission group first, because it starts with none",
          "Request only the fields needed in `fields` on POST /people/search (maximum 400). The call returns all matching employees at once, so batch by `root.id` in large companies",
          "Compare returned fields with requested ones. Missing permission or a wrong field ID yields 200 with the field omitted",
          "Stop on 401 or 403. More than 50 in 10 seconds blocks the IP for 5 minutes",
          "Back off on 429 using Retry-After. Writes such as update, create and terminate employee allow 10 calls a minute, and no idempotency key exists, so check state before retrying a write"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 57
          }
        ],
        "editorialScores": {
          "ergonomics": 47,
          "maintenance": 59,
          "payments": 0,
          "reliability": 67,
          "schema": 78,
          "security": 68,
          "transparency": 58
        },
        "provenanceScore": 83
      },
      "connect": {
        "http": "curl -X POST \"https://api.hibob.com/v1/people/search\" \\\n  -u \"$BOB_SERVICE_USER_ID:$BOB_SERVICE_USER_TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"fields\":[\"root.id\",\"root.email\",\"work.department\"]}'"
      },
      "letme": {
        "capability": "https://letme.dev/hr.employees",
        "tool": "https://letme.dev/hibob"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "Hi Bob Ltd.",
        "domain": "hibob.com",
        "domainRegistered": "2010-02-25",
        "endpointOnVendorDomain": true,
        "terms": "https://apidocs.hibob.com/docs/api-terms-of-use",
        "privacy": "https://www.hibob.com/privacy/privacy-policy",
        "statusPage": "https://status.hibob.io",
        "changelog": "https://apidocs.hibob.com/changelog",
        "securityTxt": "unknown",
        "checked": "2026-10-07",
        "notes": [
          "The API Terms of Use name Hi Bob Ltd. and its subsidiaries. The privacy policy (updated 16 February 2026) names Hi Bob (UK) Limited, 5 New Street Square, London EC4A 3TW, and says it does not cover people who use Bob at a customer's direction.",
          "The customer subscription terms (revised January 2026) list contracting entities by region, among them Hi Bob, Inc., Hi Bob Ltd., Hi Bob (UK) Limited and Hi Bob (NL) B.V.",
          "The API answers at https://api.hibob.com/v1 and the sandbox at https://api.sandbox.hibob.com/v1. OAuth tokens are exchanged at https://auth.app.hibob.com/oauth2/v1/apps/token. The status page is on a separate domain, status.hibob.io.",
          "www.hibob.com/.well-known/security.txt returned a Cloudflare block page (403) to both of our fetchers, so its presence is unknown.",
          "RDAP for hibob.com gives a registration date of 2010-02-25.",
          "The data processing addendum page (updated September 2026) links to a pre-signed DocuSign document and does not show the terms."
        ],
        "score": 83
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/hibob.json",
      "live": {
        "slug": "hibob",
        "probe": {
          "target": "https://api.hibob.com/v1",
          "method": "get",
          "lastAt": "2026-10-08T21:12:12.027010458Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 105,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 106,
          "p95ms24h": 187,
          "samples24h": 64,
          "samples30d": 64,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 64,
              "ok": 64
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.hibob.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:08.105535562Z"
        },
        "securityTxt": {
          "url": "https://hibob.com/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-10-08T15:39:05.839381908Z"
        },
        "pages": [
          {
            "url": "https://apidocs.hibob.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:15:14.469649765Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "981f915fbe41"
          },
          {
            "url": "https://www.hibob.com/pricing-plans",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:28:16.10467361Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ac07b0d6702c"
          },
          {
            "url": "https://www.hibob.com/privacy/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:28:18.345425875Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1bf3ce3c5701"
          },
          {
            "url": "https://apidocs.hibob.com/docs/api-terms-of-use",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:15:16.937981436Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d6b463c8c703"
          }
        ],
        "updatedAt": "2026-10-08T21:12:12.027010458Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Everyday Software, S.L.",
        "b": "Hi Bob Ltd.",
        "name": "Vendor"
      },
      {
        "a": "https://api.factorialhr.com",
        "b": "https://api.hibob.com/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT",
        "b": "Proprietary service under HiBob's customer subscription terms and API Terms of Use",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-05",
        "b": "2026-10-07",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-01-01",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "7 stars, 1.4k npm/wk, 1.1k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Factorial scores 66.3 (B) on agent readiness against HiBob's 57 (C), and leads in 5 of 7 scored categories.",
        "question": "Which is better for AI agents, Factorial or HiBob?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Factorial and HiBob need an API key?"
      },
      {
        "answer": "Yes. Factorial has a hosted endpoint at https://api.factorialhr.com and HiBob at https://api.hibob.com/v1.",
        "question": "Can an agent call Factorial and HiBob without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 88 against 67",
          "Agent ergonomics, 58 against 47",
          "Payments \u0026 pricing, 10 against 0",
          "Maintenance \u0026 community, 84 against 59",
          "Transparency \u0026 trust, 78 against 71"
        ],
        "also": null,
        "goodFor": "An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.",
        "slug": "factorial",
        "watchFor": "An API key grants every scope, cannot be narrowed and does not expire"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "An agent working inside a company that already runs Bob and needs field-level control over employee data, time off requests, documents and tasks.",
        "slug": "hibob",
        "watchFor": "No public price, free tier or trial. The sandbox is a purchased module"
      }
    ],
    "job": {
      "capability": "hr.employees",
      "name": "Hr employees"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/bamboohr-vs-factorial.json",
        "title": "BambooHR vs Factorial",
        "url": "https://www.anchorterminal.com/compare/bamboohr-vs-factorial"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bamboohr-vs-hibob.json",
        "title": "BambooHR vs HiBob",
        "url": "https://www.anchorterminal.com/compare/bamboohr-vs-hibob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deel-vs-factorial.json",
        "title": "Deel vs Factorial",
        "url": "https://www.anchorterminal.com/compare/deel-vs-factorial"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deel-vs-hibob.json",
        "title": "Deel vs HiBob",
        "url": "https://www.anchorterminal.com/compare/deel-vs-hibob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-humaans.json",
        "title": "Factorial vs Humaans",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-humaans"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-rippling.json",
        "title": "Factorial vs Rippling",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-rippling"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-zoho-people.json",
        "title": "Factorial vs Zoho People",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-zoho-people"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hibob-vs-humaans.json",
        "title": "HiBob vs Humaans",
        "url": "https://www.anchorterminal.com/compare/hibob-vs-humaans"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hibob-vs-rippling.json",
        "title": "HiBob vs Rippling",
        "url": "https://www.anchorterminal.com/compare/hibob-vs-rippling"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hibob-vs-zoho-people.json",
        "title": "HiBob vs Zoho People",
        "url": "https://www.anchorterminal.com/compare/hibob-vs-zoho-people"
      }
    ],
    "scores": [
      {
        "by": 21,
        "edge": "factorial",
        "factorial": 88,
        "hibob": 67,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "hibob",
        "factorial": 77,
        "hibob": 78,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 11,
        "edge": "factorial",
        "factorial": 58,
        "hibob": 47,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 3,
        "edge": "hibob",
        "factorial": 65,
        "hibob": 68,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 10,
        "edge": "factorial",
        "factorial": 10,
        "hibob": 0,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 25,
        "edge": "factorial",
        "factorial": 84,
        "hibob": 59,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 7,
        "edge": "factorial",
        "factorial": 78,
        "hibob": 71,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Factorial scores 66.3 (B) on agent readiness against HiBob's 57 (C), and leads in 5 of 7 scored categories. Both do hr employees.",
    "verdicts": {
      "factorial": "A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.",
      "hibob": "Service users start with no permissions and gain view or edit rights per field, and the docs are served as Markdown with an OpenAPI definition on each endpoint page. There is no public price, trial or free sandbox, so an agent needs a paying customer's admin to issue credentials. No idempotency keys or official SDKs were found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/factorial-vs-hibob",
    "json": "https://www.anchorterminal.com/compare/factorial-vs-hibob.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/factorial-vs-hibob.md",
    "slim": "https://www.anchorterminal.com/compare/factorial-vs-hibob.min.md"
  },
  "markdown": "Factorial scores 66.3 (B) on agent readiness against HiBob's 57 (C), and leads in 5 of 7 scored categories. Both do hr employees.\n\n- Factorial: grade B, 66.3/100, rank #239 of 722. Markdown https://www.anchorterminal.com/tools/factorial.md · JSON https://www.anchorterminal.com/api/v1/tools/factorial.json\n- HiBob: grade C, 57/100, rank #484 of 722. Markdown https://www.anchorterminal.com/tools/hibob.md · JSON https://www.anchorterminal.com/api/v1/tools/hibob.json\n\n## Which one, for what\n\n### Factorial (B)\n\nGood for: An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.\n\nAhead on:\n- Reliability, 88 against 67\n- Agent ergonomics, 58 against 47\n- Payments \u0026 pricing, 10 against 0\n- Maintenance \u0026 community, 84 against 59\n- Transparency \u0026 trust, 78 against 71\n\nWatch for: An API key grants every scope, cannot be narrowed and does not expire\n\n### HiBob (C)\n\nGood for: An agent working inside a company that already runs Bob and needs field-level control over employee data, time off requests, documents and tasks.\n\nWatch for: No public price, free tier or trial. The sandbox is a purchased module\n\n\n## Score by category\n\n| Category | Weight | Factorial | HiBob | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 88 | 67 | Factorial +21 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 78 | HiBob +1 |\n| Agent ergonomics | 13% (16.2 this run) | 58 | 47 | Factorial +11 |\n| Security \u0026 auth | 14% (17.5 this run) | 65 | 68 | HiBob +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 0 | Factorial +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 84 | 59 | Factorial +25 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 78 | 71 | Factorial +7 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.3 · B** | **57 · C** | |\n\n## Facts side by side\n\n| Fact | Factorial | HiBob |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Everyday Software, S.L. | Hi Bob Ltd. |\n| Hosted endpoint | `https://api.factorialhr.com` | `https://api.hibob.com/v1` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT | Proprietary service under HiBob's customer subscription terms and API Terms of Use |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-05 | 2026-10-07 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | 2026-01-01 | no date given |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 7 stars, 1.4k npm/wk, 1.1k PyPI/wk | none |\n\n## Verdicts\n\n**Factorial.** A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.\n\n**HiBob.** Service users start with no permissions and gain view or edit rights per field, and the docs are served as Markdown with an OpenAPI definition on each endpoint page. There is no public price, trial or free sandbox, so an agent needs a paying customer's admin to issue credentials. No idempotency keys or official SDKs were found.\n\n## Before you call either\n\n### Factorial\n\n1. Send an API key in `x-api-key` and an OAuth token in `Authorization: Bearer`. The key is JWT-formatted but is rejected as a bearer token\n2. Pin the version in the path, such as `/api/2026-10-01/resources/...`, and migrate within a year. Expired versions answer in an older schema without an error\n3. Treat a 200 with an empty body as a credential from the other environment. Production is `api.factorialhr.com` and demo is `api.eu2.demo.factorial.dev`\n4. Page with `limit=100` and pass `meta.end_cursor` as `after_id`. A larger limit is capped at 100\n5. Check whether a record exists before retrying a create. Retry only 429 and 5xx with backoff, and branch on `code` for 422 because messages are localised\n\n### HiBob\n\n1. Send `Authorization: Basic base64(SERVICE-USER-ID:TOKEN)` to https://api.hibob.com/v1. Ask the Bob admin to put the service user in a permission group first, because it starts with none\n2. Request only the fields needed in `fields` on POST /people/search (maximum 400). The call returns all matching employees at once, so batch by `root.id` in large companies\n3. Compare returned fields with requested ones. Missing permission or a wrong field ID yields 200 with the field omitted\n4. Stop on 401 or 403. More than 50 in 10 seconds blocks the IP for 5 minutes\n5. Back off on 429 using Retry-After. Writes such as update, create and terminate employee allow 10 calls a minute, and no idempotency key exists, so check state before retrying a write\n\n## Questions\n\n### Which is better for AI agents, Factorial or HiBob?\n\nFactorial scores 66.3 (B) on agent readiness against HiBob's 57 (C), and leads in 5 of 7 scored categories.\n\n### Do Factorial and HiBob need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Factorial and HiBob without installing anything?\n\nYes. Factorial has a hosted endpoint at https://api.factorialhr.com and HiBob at https://api.hibob.com/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/factorial-vs-hibob.json, and with the fewest tokens: https://www.anchorterminal.com/compare/factorial-vs-hibob.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"factorial\", \"b\": \"hibob\"}`. From a terminal: `anchor compare factorial hibob`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/factorial.json and https://www.anchorterminal.com/api/v1/tools/hibob.json\n\n## Other comparisons with Factorial or HiBob\n\n- [BambooHR vs Factorial](https://www.anchorterminal.com/compare/bamboohr-vs-factorial.md)\n- [BambooHR vs HiBob](https://www.anchorterminal.com/compare/bamboohr-vs-hibob.md)\n- [Deel vs Factorial](https://www.anchorterminal.com/compare/deel-vs-factorial.md)\n- [Deel vs HiBob](https://www.anchorterminal.com/compare/deel-vs-hibob.md)\n- [Factorial vs Humaans](https://www.anchorterminal.com/compare/factorial-vs-humaans.md)\n- [Factorial vs Rippling](https://www.anchorterminal.com/compare/factorial-vs-rippling.md)\n- [Factorial vs Zoho People](https://www.anchorterminal.com/compare/factorial-vs-zoho-people.md)\n- [HiBob vs Humaans](https://www.anchorterminal.com/compare/hibob-vs-humaans.md)\n- [HiBob vs Rippling](https://www.anchorterminal.com/compare/hibob-vs-rippling.md)\n- [HiBob vs Zoho People](https://www.anchorterminal.com/compare/hibob-vs-zoho-people.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "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"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Factorial vs HiBob",
        "url": ""
      }
    ],
    "description": "Factorial scores 66.3 (B) on agent readiness against HiBob's 57 (C), and leads in 5 of 7 scored categories. Both do hr employees. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Factorial B 66.3",
      "HiBob C 57",
      "scores"
    ],
    "h1": "Factorial vs HiBob",
    "image": "https://www.anchorterminal.com/assets/og/compare-factorial-vs-hibob.png",
    "path": "/compare/factorial-vs-hibob",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Factorial vs HiBob for AI agents, B 66.3 vs C 57 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/factorial-vs-hibob"
  },
  "tokens": {
    "markdown": 2000,
    "slim": 630
  },
  "version": 1
}
