FR
Copied
Modules

Tech stack

Tech stack

Detect the technologies powering each prospect's website — CMS, JavaScript frameworks, analytics suites, payment processors, hosting and CDN — and return one structured row per site.

Typical use cases:

Inputs

Items without a resolvable site_web are dropped before billing.

Field Type Required Notes
items array yes 1 to 10,000 POI rows
items[].site_web string yes HTTP(S) URL of the website to fingerprint
source_job_id string no UUID of an upstream job to chain from

Outputs

One enriched row per input item. Detection is best-effort: any column may be null when the signal is absent or ambiguous.

Column Type Description
tech_cms string | null Primary content management system or site builder (e.g. wordpress, shopify, webflow).
tech_analytics string | null Analytics products detected on the site (e.g. ga4, matomo, plausible).
tech_ads_pixels string | null Advertising pixels detected (e.g. meta, google_ads, linkedin, tiktok).

The full per-site report — three-tier hierarchy, business signals, technical metadata — is available on the job detail page; the CSV exposes the flat signals above for filtering and pipeline branching.

Lifecycle

Standard outsend job lifecycle; see /docs/concepts/jobs-lifecycle. Progress is reported per site, in the sites unit.

Pipeline

needs:    [site_web]
produces: [tech_cms, tech_analytics, tech_ads_pixels]

Any upstream module that emits site_webscrap being the canonical source — can feed techstack.

Endpoints

Create a job

POST /api/jobs/techstack
{
  "items": [
    { "site_web": "https://example.com" },
    { "site_web": "https://another.example" }
  ],
  "source_job_id": "8b3e…optional"
}

Returns the created job with its id and initial pending status.

Inspect a job

GET /api/jobs/{job_id}

Stream progress

GET /api/jobs/{job_id}/stream

Server-sent events, one event per processed site plus terminal status transitions.

Download results

GET /api/jobs/{job_id}/download

Returns the enriched list. Each row carries the original POI fields plus the columns documented in Outputs.

Limits

See /docs/concepts/limits for global limits. URL scheme must be http:// or https://. A job with zero valid items after site_web filtering is rejected with 400.

Errors

HTTP Code / message When it happens
400 Aucun établissement avec site web No item in the payload has a usable site_web.
400 Quota dépassé The job's EF cost exceeds MAX_EF_PER_JOB.
400 Validation error Payload shape invalid (size, missing fields, bad types).

Errors are returned as JSON with a detail field. Once a job is running, per-item failures land in the result row (empty columns) rather than as HTTP errors.

What's next

The techstack output composes naturally with: