Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0931c52
Document Firecrawl Exchange
developersdigest Jul 31, 2026
556f049
Merge remote-tracking branch 'origin/main' into feat/exchange
developersdigest Jul 31, 2026
82960ef
Document Exchange as part of search
developersdigest Jul 31, 2026
fe3fcfc
Show ranked discovery results instead of a print loop
developersdigest Jul 31, 2026
a4e8376
Show one filter example rather than three
developersdigest Jul 31, 2026
58c6f86
Drop the beta and per-account access note
developersdigest Jul 31, 2026
3b1e3e5
Expand nested source objects and match the new result description
developersdigest Jul 31, 2026
336b00b
Show provider, capability and creditsPerCall on discovery results
developersdigest Jul 31, 2026
aba7f86
Restructure Exchange as steps and move errors to the API reference
developersdigest Jul 31, 2026
2e8b638
Name real providers when explaining what one is
developersdigest Jul 31, 2026
5c74c80
Update exchange.mdx
developersdigest Jul 31, 2026
dad606e
Drop the idempotency key from the Exchange page
developersdigest Jul 31, 2026
2c0b064
Wrap long lines in the Exchange result examples
developersdigest Aug 1, 2026
52ce37c
Use market data for the Exchange walkthrough and drop BYOK
developersdigest Aug 1, 2026
368bbd4
Build the Exchange page around one Apple research task
developersdigest Aug 1, 2026
df51c10
Frame the Exchange page around the outcome, not the mechanics
developersdigest Aug 1, 2026
954e493
Open the Exchange page on triaging an inbound lead
developersdigest Aug 1, 2026
914020e
Add an animated agent demo to the top of the Exchange page
developersdigest Aug 1, 2026
1b29b8d
Make the Exchange demo read like a CLI session
developersdigest Aug 1, 2026
892309c
Match the Exchange demo to a real CLI transcript
developersdigest Aug 1, 2026
eeec176
Rework the Exchange demo around outcomes
developersdigest Aug 1, 2026
408f0d2
Start the Exchange brief from a single email address
developersdigest Aug 1, 2026
fa246b0
Build the LP brief from the portfolio file plus live data
developersdigest Aug 1, 2026
49bf8f2
Write the demo prompts as full sentences
developersdigest Aug 1, 2026
3d3934e
Add hiring and audience scenarios, and price every call at 5 credits
developersdigest Aug 1, 2026
d60d222
Start the hiring scenario on the open web
developersdigest Aug 1, 2026
3be213f
Call the audience scenario Marketing
developersdigest Aug 1, 2026
38a5fa9
Give the hiring answer the detail the table earned
developersdigest Aug 1, 2026
b61810d
docs: align Alexandria with unified tools and client workflows
developersdigest Sep 11, 2026
e2f00db
Merge main into Alexandria docs
developersdigest Sep 11, 2026
ac4cc53
docs(alexandria): domainTools on search and scrape, execution error c…
developersdigest Sep 12, 2026
38a79ba
docs(alexandria): rename provider execution key to alexandria
developersdigest Sep 12, 2026
8e51d9e
docs(api-reference): Alexandria source, domainTools, and execution on…
developersdigest Sep 12, 2026
afc4c97
docs(alexandria): lead with the agent surfaces, name Find Tools as th…
developersdigest Sep 13, 2026
efc73b1
Refresh Alexandria CLI and feedback guidance
developersdigest Sep 21, 2026
c47a967
Keep API identifiers untranslated in localized docs
developersdigest Sep 22, 2026
a056c7e
Simplify Alexandria guide around discovery and execution
developersdigest Sep 22, 2026
7df68ba
Replace Alexandria error table with concise retry guidance
developersdigest Sep 22, 2026
e13398f
Trim retry and feedback details from Alexandria overview
developersdigest Sep 22, 2026
b8a9bac
Hide Alexandria from docs sidebar
developersdigest Sep 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
478 changes: 474 additions & 4 deletions api-reference/v2-openapi.json

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -4859,6 +4859,10 @@
]
},
"redirects": [
{
"source": "/features/exchange",
"destination": "/features/alexandria"
},
{
"destination": "/api-reference/endpoint/browser-create",
"source": "/api-reference/endpoint/browser-create-session"
Expand Down
6 changes: 3 additions & 3 deletions es/features/change-tracking.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ La respuesta incluye estos campos en el objeto `changeTracking`:
## Uso básico
</div>

Incluye tanto `markdown` como `seguimientoDeCambios` en el array `formats`. El formato `markdown` es obligatorio porque seguimientoDeCambios compara las páginas según su contenido en markdown.
Incluye tanto `markdown` como `changeTracking` en el array `formats`. El formato `markdown` es obligatorio porque changeTracking compara las páginas según su contenido en markdown.

<CodeGroup>
```python Python
Expand Down Expand Up @@ -551,7 +551,7 @@ Plataformas sin código como **n8n**, **Zapier** y **Make** pueden llamar perió
## Webhooks
</div>

Para operaciones asíncronas como `crawl` y *batch scrape*, usa [webhooks](/es/webhooks/overview) para recibir resultados de seguimientoDeCambios a medida que llegan en lugar de hacer *polling*.
Para operaciones asíncronas como `crawl` y *batch scrape*, usa [webhooks](/es/webhooks/overview) para recibir resultados de changeTracking a medida que llegan en lugar de hacer *polling*.

<CodeGroup>
```python Python
Expand Down Expand Up @@ -643,7 +643,7 @@ Para más detalles sobre la configuración de webhooks (encabezados, metadatos,
## Referencia de configuración
</div>

El conjunto completo de opciones disponibles al pasar un objeto de formato `seguimientoDeCambios`:
El conjunto completo de opciones disponibles al pasar un objeto de formato `changeTracking`:

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
Expand Down
2 changes: 1 addition & 1 deletion es/features/fast-scraping.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ La caché se omite automáticamente cuando tu solicitud incluye cualquiera de lo
* `headers` personalizados
* `actions` (pasos de automatización del navegador)
* Un `profile` del navegador
* Formato `seguimientoDeCambios`
* Formato `changeTracking`
* Configuración personalizada de viewport o calidad de `screenshot`

<div id="cache-hit-matching">
Expand Down
2 changes: 1 addition & 1 deletion es/features/search.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -655,7 +655,7 @@ Para ayudar a controlar los costos:
## Opciones avanzadas de scraping
</div>

Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y seguimientoDeCambios, es compatible con este punto de conexión de búsqueda.
Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y changeTracking, es compatible con este punto de conexión de búsqueda.

> ¿Eres un agente de IA que necesita una API key de Firecrawl? Consulta [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) para ver las instrucciones de incorporación automatizada.

Expand Down
2 changes: 1 addition & 1 deletion es/sdks/cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ Extrae el contenido de una única URL en distintos formatos.
| Opción | Alias | Descripción |
| ------------------------ | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--url <url>` | `-u` | URL para hacer scrape (alternativa al argumento posicional) |
| `--format <formats>` | `-f` | Formatos de salida (separados por comas): `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `seguimientoDeCambios`, `attributes`, `branding` |
| `--format <formats>` | `-f` | Formatos de salida (separados por comas): `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `changeTracking`, `attributes`, `branding` |
| `--html` | `-H` | Atajo para `--format html` |
| `--only-main-content` | | Extraer solo el contenido principal |
| `--wait-for <ms>` | | Tiempo de espera en milisegundos para el renderizado de JS |
Expand Down
2 changes: 1 addition & 1 deletion es/v1/features/search.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -369,4 +369,4 @@ Para ayudar a controlar los costos:
## Opciones avanzadas de scraping
</div>

Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y la función de seguimientoDeCambios, es compatible con este punto de conexión de búsqueda.
Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y la función de changeTracking, es compatible con este punto de conexión de búsqueda.
2 changes: 1 addition & 1 deletion es/webhooks/events.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Se envía cuando la tarea de rastreo comienza a procesarse.
```json
{
"success": true,
"type": "rastreo.iniciado",
"type": "crawl.started",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [],
"metadata": {}
Expand Down
191 changes: 191 additions & 0 deletions features/alexandria.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
---
title: "Alexandria"
description: "The knowledge library for superintelligence"
og:title: "Alexandria | Firecrawl"
og:description: "Discover and use data tools through Firecrawl, with just the context your agent needs."
icon: "books"
---

import AlexandriaJourney from "/snippets/alexandria-journey.mdx";

<AlexandriaJourney />

Alexandria gives agents access to structured data through Firecrawl. Discover a tool, inspect its inputs, then run it. Discovery is free; execution uses the credits listed on the tool.

[Browse providers](https://www.firecrawl.dev/app/alexandria) · [Manage provider terms](https://www.firecrawl.dev/app/settings?tab=data-sources)

## Built for agents

Install the [CLI](/sdks/cli) or connect the [MCP server](/mcp-server).

<Tabs>
<Tab title="Firecrawl CLI">
```bash
# Find tools alongside web results.
firecrawl search "podcast conversations about AI agents" --sources web,alexandria --domain-tools --limit 2

# Inspect inputs and pricing.
firecrawl find-tools --providers particle --level tools --expand options,response

# Run the tool.
firecrawl scrape particle/podcasts/episodes/search --options '{"keyword_search":"AI agents","limit":2}'
```
Install with `npm install -g firecrawl-cli` and sign in with `firecrawl login`.
</Tab>
<Tab title="MCP">
Ask your agent: "Find Particle's podcast tools, inspect episode-search inputs and pricing, then find conversations about AI agents."

The agent uses `firecrawl_search` to discover tools, `firecrawl_find_tools` to inspect them, and `firecrawl_scrape` to execute them.
</Tab>
</Tabs>

## Use it from the SDKs and API

<Steps>
<Step title="Find the right tool">
Describe what you need. Alexandria returns relevant tools alongside your web results.

<CodeGroup>
```javascript JavaScript
const result = await firecrawl.search(
"podcast conversations about AI agents",
{
sources: ["web", "alexandria"],
limit: 2,
},
);
```

```python Python
result = firecrawl.search(
"podcast conversations about AI agents",
sources=["web", "alexandria"],
limit=2,
)
```

```bash cURL
curl https://api.firecrawl.dev/v2/search \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "podcast conversations about AI agents",
"sources": [
"web",
"alexandria"
],
"limit": 2
}'
```
</CodeGroup>

Results contain `web` pages and ranked `tools`. Each tool includes its provider, capability, inputs, response contract, and price.
</Step>

<Step title="Check what it needs">
Read the selected tool's `options`, `response`, and execution price before calling it. Use [Find Tools](#find-tools) for more detail.
</Step>

<Step title="Get the data">
Use `scrape` to call the tool with the inputs from its contract. Supply the provider and capability under `alexandria`; no page URL is needed.

<CodeGroup>
```javascript JavaScript
const episodes = await firecrawl.scrape({
alexandria: {
provider: "particle",
capability: "podcasts/episodes/search",
options: {
semantic_search: "AI agents",
limit: 2,
},
},
});

console.log(episodes.alexandria[0].data);
```

```python Python
episodes = firecrawl.scrape(
alexandria={
"provider": "particle",
"capability": "podcasts/episodes/search",
"options": {
"semantic_search": "AI agents",
"limit": 2,
},
},
)

print(episodes.alexandria[0].data)
```

```bash cURL
REQUEST_ID="$(uuidgen)"

curl https://api.firecrawl.dev/v2/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-H "x-request-id: $REQUEST_ID" \
-d '{
"alexandria": {
"provider": "particle",
"capability": "podcasts/episodes/search",
"options": {
"semantic_search": "AI agents",
"limit": 2
}
}
}'
```
</CodeGroup>

Read the result from `episodes.alexandria[0].data`. Check each tool result for errors before using its data. Raw HTTP responses wrap the SDK result in `data`.
</Step>
</Steps>

## Find Tools

Use `findTools` / `find_tools` to browse providers and inspect their tools for free. Follow an item's `next` request for more detail; the top-level `next` paginates the catalogue.

<CodeGroup>
```javascript JavaScript
const catalogue = await firecrawl.findTools({
providers: ["particle"],
limit: 2,
});

// Each next request reveals another part of the catalogue.
const next = catalogue.items[0]?.next;
if (next) {
const details = await firecrawl.scrape({ alexandria: next });
console.log(details.alexandria[0].data);
}
```

```python Python
catalogue = firecrawl.find_tools(providers=["particle"], limit=2)

if catalogue.items and catalogue.items[0].get("next"):
details = firecrawl.scrape(alexandria=catalogue.items[0]["next"])
print(details.alexandria[0].data)
```
</CodeGroup>

## Pricing and access

- **Tool discovery:** free. Use `sources: ["alexandria"]` for tools only, or `["web", "alexandria"]` to include paid web results.
- **Execution:** charged at the tool's listed price.
- **Provider terms:** a `THIRD_PARTY_DATA_TERMS_REQUIRED` error includes `requiresAction.url`. An org admin must review and accept the terms there. Agents need explicit user authorization before accepting terms.

<AccordionGroup>
<Accordion title="Find tools for a website">
Add `domainTools: true` to a search or ordinary URL scrape to include tools matched to the website. Matching is free; the web search or page scrape is billed normally. Results include `matchedBy` and `matchedUrls`.

Search enables domain matching by default when `sources` includes `alexandria`; set `domainTools: false` to disable it. For URL scrapes, domain matching is off by default.
</Accordion>
</AccordionGroup>

## Feedback

Report issues or request capabilities with `firecrawl alexandria feedback`. Run `firecrawl alexandria feedback --help` for options.
12 changes: 6 additions & 6 deletions fr/features/change-tracking.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ og:description: "Détecter et surveiller les changements dans le contenu web ent

![Change Tracking](/images/launch-week/lw3d12.webp)

Le suivi des modifications compare le contenu actuel d’une page à celui de la dernière fois où vous l’avez extraite. Ajoutez `suiviDesModifications` à votre tableau `formats` pour détecter si une page est nouvelle, inchangée ou modifiée et, si vous le souhaitez, obtenir un diff structuré de ce qui a changé.
Le suivi des modifications compare le contenu actuel d’une page à celui de la dernière fois où vous l’avez extraite. Ajoutez `changeTracking` à votre tableau `formats` pour détecter si une page est nouvelle, inchangée ou modifiée et, si vous le souhaitez, obtenir un diff structuré de ce qui a changé.

* Fonctionne avec `/scrape`, `/crawl` et `/batch/scrape`
* Deux modes de diff : `git-diff` pour les changements au niveau des lignes, `json` pour la comparaison au niveau des champs
Expand Down Expand Up @@ -43,7 +43,7 @@ La réponse inclut ces champs dans l&#39;objet `changeTracking` :
## Utilisation de base
</div>

Incluez à la fois `markdown` et `suiviDesModifications` dans le tableau `formats`. Le format `markdown` est obligatoire, car la fonctionnalité de suivi des modifications compare les pages à partir de leur contenu Markdown.
Incluez à la fois `markdown` et `changeTracking` dans le tableau `formats`. Le format `markdown` est obligatoire, car la fonctionnalité de suivi des modifications compare les pages à partir de leur contenu Markdown.

<CodeGroup>
```python Python
Expand All @@ -53,7 +53,7 @@ Incluez à la fois `markdown` et `suiviDesModifications` dans le tableau `format

result = firecrawl.scrape(
"https://example.com/pricing",
formats=["markdown", "suiviDesModifications"]
formats=["markdown", "changeTracking"]
)

print(result.changeTracking)
Expand All @@ -65,7 +65,7 @@ Incluez à la fois `markdown` et `suiviDesModifications` dans le tableau `format
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

const result = await firecrawl.scrape('https://example.com/pricing', {
formats: ['markdown', 'suiviDesModifications']
formats: ['markdown', 'changeTracking']
});

console.log(result.changeTracking);
Expand All @@ -77,7 +77,7 @@ Incluez à la fois `markdown` et `suiviDesModifications` dans le tableau `format
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/pricing",
"formats": ["markdown", "suiviDesModifications"]
"formats": ["markdown", "changeTracking"]
}'
```
</CodeGroup>
Expand Down Expand Up @@ -176,7 +176,7 @@ L&#39;objet `diff` contient à la fois un diff en texte brut et une représentat

```json
{
"suiviDesModifications": {
"changeTracking": {
"previousScrapeAt": "2025-06-01T10:00:00.000+00:00",
"changeStatus": "changed",
"visibility": "visible",
Expand Down
4 changes: 2 additions & 2 deletions fr/features/monitoring.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ L&#39;intervalle minimal est de 5 minutes. Les réponses de l&#39;API renvoient
## Suivi des modifications
</div>

Les moniteurs [Page](/fr/features/monitoring-page) et [website](/fr/features/monitoring-website) calculent par défaut les différences dans le markdown de chaque page et indiquent `same`, `changed`, `new`, `removed` ou `error`. Le même calcul de différences est disponible en un seul appel via le format [suivi des modifications](/fr/features/change-tracking) lorsque vous exécutez vous-même le scrape. Si vous souhaitez détecter des modifications dans des **champs structurés précis** (prix, titre, indicateur de disponibilité, éléments d’une liste, etc.), activez le suivi des modifications en mode JSON en ajoutant le format `suiviDesModifications` avec `modes: ["json"]` aux `scrapeOptions` de la cible.
Les moniteurs [Page](/fr/features/monitoring-page) et [website](/fr/features/monitoring-website) calculent par défaut les différences dans le markdown de chaque page et indiquent `same`, `changed`, `new`, `removed` ou `error`. Le même calcul de différences est disponible en un seul appel via le format [suivi des modifications](/fr/features/change-tracking) lorsque vous exécutez vous-même le scrape. Si vous souhaitez détecter des modifications dans des **champs structurés précis** (prix, titre, indicateur de disponibilité, éléments d’une liste, etc.), activez le suivi des modifications en mode JSON en ajoutant le format `changeTracking` avec `modes: ["json"]` aux `scrapeOptions` de la cible.

<Note>
Le suivi des modifications s’applique aux cibles `scrape` et `crawl`. Les moniteurs web à grande échelle (`search`) génèrent des alertes sur les nouveaux résultats plutôt que de calculer des différences sur des pages connues. Voir [Statuses and dedup](/fr/features/monitoring-web-scale#statuses-and-dedup).
Expand All @@ -183,7 +183,7 @@ Lorsque `scrapeOptions.formats` vaut simplement `["markdown"]`, chaque page modi
### mode JSON
</div>

Transmettez un format `suiviDesModifications` avec `modes: ["json"]`, ainsi qu’un schéma JSON (ou un `prompt`) décrivant les champs qui vous intéressent. Firecrawl extrait ce JSON à chaque vérification et génère un **diff par champ** indexé par le chemin du champ, ainsi qu’un `snapshot.json` contenant l’extraction complète actuelle, afin que les consommateurs n’aient pas à récupérer à nouveau le scrape sous-jacent.
Transmettez un format `changeTracking` avec `modes: ["json"]`, ainsi qu’un schéma JSON (ou un `prompt`) décrivant les champs qui vous intéressent. Firecrawl extrait ce JSON à chaque vérification et génère un **diff par champ** indexé par le chemin du champ, ainsi qu’un `snapshot.json` contenant l’extraction complète actuelle, afin que les consommateurs n’aient pas à récupérer à nouveau le scrape sous-jacent.

<CodeGroup>
<CreateJsonPython />
Expand Down
2 changes: 1 addition & 1 deletion fr/sdks/cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ Analysez une seule URL et extrayez son contenu dans différents formats.
| Option | Forme courte | Description |
| ------------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--url <url>` | `-u` | URL à Scrape (alternative à l&#39;argument positionnel) |
| `--format <formats>` | `-f` | formats de sortie (séparés par des virgules) : `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `suiviDesModifications`, `attributes`, `branding` |
| `--format <formats>` | `-f` | formats de sortie (séparés par des virgules) : `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `changeTracking`, `attributes`, `branding` |
| `--html` | `-H` | Raccourci pour `--format html` |
| `--only-main-content` | | Extraire uniquement le contenu principal |
| `--wait-for <ms>` | | Temps d&#39;attente en millisecondes pour le rendu JS |
Expand Down
2 changes: 1 addition & 1 deletion fr/v1/features/search.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -369,4 +369,4 @@ Pour maîtriser les coûts :
## Options de scraping avancées
</div>

Pour plus de détails sur les options de scraping, consultez la [documentation de la fonctionnalité Scrape](https://docs.firecrawl.dev/features/scrape). Tout, à l’exception de FIRE-1 (Agent) et du suiviDesModifications, est pris en charge par ce point de terminaison Search.
Pour plus de détails sur les options de scraping, consultez la [documentation de la fonctionnalité Scrape](https://docs.firecrawl.dev/features/scrape). Tout, à l’exception de FIRE-1 (Agent) et du changeTracking, est pris en charge par ce point de terminaison Search.
Loading
Loading