> For the complete documentation index, see [llms.txt](https://gaffa.dev/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gaffa.dev/docs/changelog/2026/q1.md).

# Q1

Here's a summary of everything we shipped and published in Q1 2026.

### API Changes

#### `parse_json` Now Publicly Available

[`parse_json`](https://gaffa.dev/docs/features/browser-requests/actions/parse-json) has graduated from beta and is now publicly available. It uses AI to extract structured data from any webpage according to a schema you define, without HTML parsing or brittle CSS selectors. You describe the fields you want, and Gaffa returns a clean JSON object.&#x20;

#### Mapping Requests Now Publicly Available

[Mapping Requests](https://gaffa.dev/docs/features/mapping-requests), which lets you extract all URLs from a site's sitemap, has moved out of beta and is now publicly available to all users. It's useful for building crawlers, auditing site structure, or feeding a list of URLs into a batch scraping workflow.&#x20;

***

### Tools

#### New Tool: HTML to Markdown Converter

We launched [HTML2Markdown](https://html2markdown.gaffa.dev/), a free tool powered by Gaffa that converts any webpage into clean, readable markdown in one click. It's built on the same [`generate_markdown` ](/docs/features/browser-requests/actions/generate-markdown.md)action available in the API, so it's also a good way to see what the action produces before integrating it into your own project.

***

### Samples, Blog & Tutorials

#### Table Scraping: Python Examples and Full Walkthrough

We added a new set of Python examples to our GitHub samples repository focused on scraping tables, along with a full blog post walkthrough covering both approaches, when to use each, and how to get clean, structured output either way. There are three scripts covering different approaches:

* `capture_dom.py` — Fetches the raw HTML via Gaffa's `capture_dom` action and parses the table locally using BeautifulSoup. Good for when you need full control over how the data is processed.
* `parse_table_demo.py` — Uses Gaffa's `parse_table` action on our demo site to return structured JSON directly, with no HTML parsing required.
* `parse_table_wikipedia.py` — A real-world example using `parse_table` on Wikipedia's GDP by Country table. Shows how headers are automatically normalised into clean JSON keys.

View the [examples](https://github.com/GaffaAI/GaffaPythonExamples/tree/main/scripts/ScrapingTables). Read the [post](https://gaffa.dev/blog/how-to-scrape-a-table-with-python).

#### Automated Form Filling: Python Examples and Tutorial

We added a set of Python examples to our samples repository along with a full tutorial covering how to automate web form interactions end-to-end. It walks through using `parse_json` to extract all fields from a form into a structured schema, prompting for values in the terminal, filling and submitting the form using `type` and `click`, and capturing a screenshot after submission. It's designed for automation workflows that require schema-driven extraction with a human-in-the-loop data-entry step.

View the [examples](https://github.com/GaffaAI/GaffaPythonExamples/tree/main/scripts/AutomatedFormFilling). Read the [tutorial](https://gaffa.dev/docs/tutorials/forms).

#### How to Scrape Every Image from a Website

We published a guide walking through how to use Gaffa to automatically extract every image from a webpage, covering how to combine browser actions to navigate, wait for content to load, and pull out image URLs at scale. [Read the post.](https://gaffa.dev/blog/how-to-automatically-scrape-every-image-from-a-website)

#### How to Slash Your Gaffa Credit Costs by 40+%

We published a breakdown of how blocking unnecessary media downloads using `max_media_bandwidth` can reduce your credit usage by over 40% on image-heavy sites, with no impact on the text content you're trying to extract. [Read the blog.](https://gaffa.dev/blog/how-to-slash-your-gaffa-credit-costs-by-40-percent)

#### Let Your AI Assistant Write Your Gaffa Code

We published a guide showing how to use Gaffa's `llms.txt` file to give AI assistants like ChatGPT or Claude accurate, up-to-date context about the API, so they can generate working code straight away without you needing to explain endpoint structures or payload formats. [Read the blog.](https://gaffa.dev/blog/let-your-ai-assistant-write-your-gaffa-code)

#### Case Study: ivee

We published a case study on how ivee used Gaffa to scrape 50 job boards, tripling their curated job listings and saving 10 hours of manual work per week. It's a good real-world example of what's possible when you remove the infrastructure overhead from a scraping workflow. [Read the case study.](https://gaffa.dev/blog/ivee-case-study)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://gaffa.dev/docs/changelog/2026/q1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
