{
  "openapi": "3.0.1",
  "info": {
    "title": "Experts-Comptables Annuaire Scraper - French Accountant Leads",
    "description": "$1.80 per 1,000 cabinets, no start fee. Every cabinet on the Ordre des experts-comptables public annuaire: phone (on 92-98% of profiles, measured), website, street address, GPS, entity type, named experts-comptables. By commune, department, region or all France. Optional audited SIREN join.",
    "version": "0.1",
    "x-build-id": "eeDtkfEJD2aH8ZfbK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~experts-comptables-annuaire-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-experts-comptables-annuaire-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapersdelight~experts-comptables-annuaire-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-experts-comptables-annuaire-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapersdelight~experts-comptables-annuaire-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-experts-comptables-annuaire-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "cities": {
            "title": "Communes",
            "type": "array",
            "description": "Communes to export, as the annuaire names them. Add the department code in brackets to skip the lookup and to pick the right one of several same-named communes: \"Rodez (12)\", \"Lyon (69)\", \"Saint-Denis (974)\". A name without a code is matched in every department. Leave empty (and leave Regions/Departments empty) for all of France.",
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Department codes, every commune in each: \"69\", \"75\", \"13\", \"971\". Corsica is one department on the annuaire, code \"20\" (not 2A/2B).",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Whole regions, every department and commune in each. Leave Communes, Departments and Regions all empty to export the whole of France (about 31,600 cabinets).",
            "items": {
              "type": "string",
              "enum": [
                "auvergne-rhone-alpes",
                "bourgogne-franche-comte",
                "bretagne",
                "centre-val-de-loire",
                "corse",
                "grand-est",
                "guadeloupe",
                "guyane",
                "hauts-de-france",
                "ile-de-france",
                "la-reunion",
                "martinique",
                "mayotte",
                "normandie",
                "nouvelle-aquitaine",
                "occitanie",
                "pays-de-la-loire",
                "provence-alpes-cote-d-azur"
              ],
              "enumTitles": [
                "Auvergne-Rhône-Alpes",
                "Bourgogne-Franche-Comté",
                "Bretagne",
                "Centre-Val de Loire",
                "Corse",
                "Grand Est",
                "Guadeloupe",
                "Guyane",
                "Hauts-de-France",
                "Île-de-France",
                "La Réunion",
                "Martinique",
                "Mayotte",
                "Normandie",
                "Nouvelle-Aquitaine",
                "Occitanie",
                "Pays de la Loire",
                "Provence-Alpes-Côte d'Azur"
              ]
            }
          },
          "profileUrls": {
            "title": "Profile URLs (refresh known cabinets)",
            "type": "array",
            "description": "Optional. annuaire.experts-comptables.org profile links (https://annuaire.experts-comptables.org/expert-comptable/<id>-<slug>). When set, ONLY these profiles are fetched and the location fields above are ignored. Entity type, department and region are printed on search results, not on the profile page, so they are null in this mode.",
            "items": {
              "type": "string"
            }
          },
          "entityTypes": {
            "title": "Entity types",
            "type": "array",
            "description": "Keep only these kinds of inscription, read from the type label the annuaire prints on each result card. Empty = all. Filtered cabinets are never fetched or charged.",
            "items": {
              "type": "string",
              "enum": [
                "firm",
                "independent",
                "multiProfessionalFirm",
                "branch",
                "managementAssociation"
              ],
              "enumTitles": [
                "Société d'expertise comptable (firm)",
                "Expert-comptable indépendant (sole practitioner)",
                "Société pluri-professionnelle d'exercice (SPE)",
                "Succursale d'expertise comptable (branch)",
                "Association de gestion et de comptabilité (AGC)"
              ]
            }
          },
          "requireContact": {
            "title": "Only cabinets with a phone or website",
            "type": "boolean",
            "description": "On (default): a cabinet that publishes neither a phone nor a website is skipped and NOT charged (2-8% of profiles publish no phone, measured on three samples). Off: it is delivered and charged like any row.",
            "default": true
          },
          "requirePhone": {
            "title": "Only cabinets with a phone",
            "type": "boolean",
            "description": "Stricter: skip (and do not charge) any cabinet without a published phone number, even if it has a website.",
            "default": false
          },
          "enrichSiren": {
            "title": "Add SIREN / SIRET + directors (audited join)",
            "type": "boolean",
            "description": "Off by default. On: each row is joined to the State's open business register (recherche-entreprises.api.gouv.fr). A SIREN is filled only when exactly one active NAF 69.20Z company matches the cabinet name (or its single listed expert-comptable as director) AND has an establishment at the same postal code or commune; otherwise it stays null with the reason in sirenMatchStatus. A matched row is charged the extra siren-matched event; unmatched rows are not. Slower: about 4 lookups per second.",
            "default": false
          },
          "maxResults": {
            "title": "Max cabinets",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many delivered (and charged) cabinets. 0 = no limit (all of France is about 31,600 cabinets).",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Requests in flight at once. The annuaire has no anti-bot; 8 is fast and polite.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Default: direct (the annuaire has no anti-bot; measured 20x cheaper and faster than a proxy). Any request that fails direct is retried automatically through Apify RESIDENTIAL (France) on a fresh session. Set a proxy here only to force every request through it.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}