Impect adapter

Impect: Open-data feed with carries as first-class events.

Impect's open-data slice gives you events, squads, and players in one package. The adapter normalises the events (including DRIBBLE carries emitted as first-class carry events) and stitches the squad + player lookups into the lineup surface.

Input shape
An ImpectOpenDataSlice with lineups, squads, players, and optional events.
Status
Reference-backed (partial)
Raw feed
Impect
Provider-shaped. Their coordinates, their qualifier codes, their outcome strings.
Messy
Campos adapter
fromImpect.shots(openDataSlice)
Flips direction, standardises outcomes, filters own-goals and shootouts, resolves player labels.
One call
Typed data
ShotEvent[]
Drop into <ShotMap />, your own React view, a server-side report, or an analysis script.
Ready
Open-data slice as input

Impect's open-data format bundles lineups, squads, players, and events into one ImpectOpenDataSlice. The adapter takes the slice directly — no multi-payload stitching for the caller.

Get it running

One import, one call per surface.

import { fromImpect } from "@withqwerty/campos-adapters";

const events = fromImpect.events(openDataSlice);
const shots = fromImpect.shots(openDataSlice);
const passes = fromImpect.passes(openDataSlice);
const lineups = fromImpect.matchLineups(openDataSlice);
What this adapter ships

The calls you can make today.

Partial
events() returns Event[]

Every recognised match event in a canonical shape.

Impect notes: Passes, shots, carries, recoveries, interceptions, clearances, goalkeeper actions, fouls.

Partial
shots() returns ShotEvent[]

Just the shots, ready to plot.

Partial
passes() returns PassEvent[]

Pass trajectories with start, end, and result.

Partial
matchLineups() returns MatchLineups

Home and away team sheets with starters and bench.

Partial
formations() returns FormationTeamData

Kickoff tactical shape for one side.

What you can build with this

Charts that drop straight onto this adapter's output.

Supported cards plot from this adapter with no extra work. Partial cards plot, but read the scope note. Dimmed cards need a surface this provider doesn't ship.

Pitch charts

Plot events, shots, passes, and formations directly on the pitch.

Match-time + xG

Time-series and xG-driven views from shots().

Bring your own aggregates

These charts are adapter-independent — they take pre-aggregated inputs.

Carries are first-class

DRIBBLE events become canonical carries.

Impect distinguishes dribbles from pass and shot events in its raw stream. The adapter treats DRIBBLE actions as canonical carry events rather than collapsing them into take-ons — same treatment as StatsBomb carries. That means any carry-aware analysis (progressive carries, carry distance, carry-into-box flags) works the same way across providers that expose them.

Current scope

What's honest about this adapter today.

Why it's listed as partial

Open-data subset, not the full Impect catalogue.

The adapter ships against Impect's open-data release — a subset of their full event model. As more of the full model is documented and exercised, we widen the surface in a credited update.

Events currently mapped

Passes, shots, carries, recoveries, interceptions, clearances, goalkeeper, fouls.

The current adapter covers the core event set that powers pitch-level charts and canonical analysis. Missing types can be added as the open-data release evolves.

Access

Open data plus optional licensed feeds.

Impect publishes an open-data slice for research and evaluation. The adapter takes that slice; if you have access to the full licensed product, the same slice shape extends naturally.

Lineage

What this adapter borrows from whom.

Concrete credits for the projects that did the underlying research or laid the reference tables we read from.

impectPy Python

Reference for Impect open-data envelope structure and player-ID resolution.

Compare providers