← All AI Engineer talks

AI Engineer Europe 2026

From MCP to Scale: Pipelines That Build Themselves

Read the talk

From MCP to Scale: Build the Scraper Once

A live headphones search shows how an agent can inspect a protected website, generate a reusable scraper, and reserve model work for building, checking, and repairing the pipeline.

From a talk by Rafael Levi

Before you start: Basic familiarity with LLM tools, HTML selectors, JSON, and Python functions will help you follow the scraper workflow.

Ten thousand products should not mean ten thousand LLM extractions

How do you scan 10,000 products without paying for an LLM to parse every page? Access is only the first problem. Rafael Levi’s preceding session covered using MCP to reach websites protected by CAPTCHA and bot detection; this demonstration begins with what happens after the agent can reach them.

Ask the model to build the scraper, then let the scraper process the pages. Bright Data’s skills supply instructions for constructing a pipeline, while its MCP tools retrieve the target HTML so the agent can discover selectors. The reusable artifact is executable extraction code, rather than another model response containing manually extracted products.

0:170:30
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:17 · section reference included

The scraper tax continues after the first successful run

Writing a scraper creates an ongoing obligation: collect the data, notice when it disappears, and fix the extraction before a client notices. Levi calls this the scraper tax. Maintenance can consume more effort than the original implementation.

Slide titled “The Scraper Tax” with three columns: “Write the scraper,” “It breaks next Tuesday,” and “Fix It. Again. Forever.”
The Scraper Tax: write the scraper, watch it break, and fix it again.

Changing selectors and React-driven pages make that obligation harder. An agent with website access can inspect the page, identify the required data, write a scraper, and execute it. To turn those capabilities into maintenance, however, it needs explicit data validation: a successful process exit does not establish that the expected fields were collected.

Levi describes daily collections checked by an LLM client every 30 minutes; when the data is healthy, the client shuts down. A missing field becomes a reason to investigate and repair the scraper. His five-minute repair example illustrates the intended alternative to waking a maintainer at night; the live session does not demonstrate a complete failure-and-repair cycle.

1:161:25
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

1:16 · section reference included

Give the agent a reusable interface

The demonstration uses Claude Code with Bright Data MCP already connected. The Bright Data skills repository supplies scraper-building instructions and best practices. Levi contrasts earlier setups that took weeks with a build he says now takes roughly three minutes.

The initial request defines two inputs: a search keyword and a maximum page count. After correcting the target domain to walmart.com, Levi asks for headphones across three pages. Those inputs matter because the result should be a scraper that can run another search later, not code hardwired to one product category.

The construction sequence separates instructions from page structure:

  1. Retrieve the scraper-building skills.
  2. Use the connected MCP to inspect the target page’s HTML.
  3. Identify selectors and generate the scraper.

The visible scrape_as_markdown call reads the skill material as text. HTML is useful for discovering extraction structure; Markdown is enough when the agent only needs to read instructions.

Levi advertises 5,000 free requests through Bright Data MCP after opening an account. For setup today, the current FAQ specifies 5,000 monthly requests for search and Web Unlocker scraping, with shared account-level credits; that clarification does not establish the offer’s historical scope.

2:272:40
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:27 · section reference included

The same pattern works for a shopping question

Levi reports that an earlier three-page run saved about one million tokens by generating a scraper and parsing the HTML with a script. That is a reported comparison, without the underlying token accounting shown here. The mechanism is straightforward: the model helps create the extraction logic, but ordinary code performs the repeated parsing.

This can be useful even without a production collection. Instead of searching Google and reading a CNET comparison, a shopper could ask for the best-reviewed headphones across five marketplace pages. The scraper gathers the reviews and product information; the model can then answer the shopping question from the extracted data. Access to protected sites, including those behind Cloudflare, expands the sources available to that workflow.

4:585:12
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:58 · section reference included

An old scraper forces a fresh test

The Walmart run encounters a demonstration problem: an old scraper from testing is still present. Levi stops the run, asks for its deletion, and invites the audience to choose another marketplace. Amazon is suggested first; he says it is less aggressive than expected and that he can scrape it using data-center IPs. The audience then supplies Very, spelling out very.com.

Levi starts a new session, works through navigation and paste difficulties, and confirms that Very sells headphones. He repeats the headphones task on a site he says he has never used. The switch preserves the original task while removing the previously prepared Walmart scraper from the test.

6:006:09
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

6:00 · section reference included

From a search to a scheduled listener

While the new scraper builds, Levi describes a house-search listener: check a specified area for a private house below a price ceiling, then notify him when a match appears. Levi says his house-search scraper ran every half hour, notified him after a few days, and found the house where he now lives. Scheduling turns a one-time extraction into an ongoing watch for a condition.

His preference for Claude Code over Codex is based on his own experience of getting the work done with fewer detours. In the active session, the agent has found the page structure and search parameters and is building the scraper. Levi estimates that manual selector inspection and scraper construction previously took a day to a day and a half on a good day.

The browser work need not run on the presenter’s laptop. Levi says Bright Data has over 150 million IPs and that a laptop could control 1,000 browsers running on its servers. Those are infrastructure claims, not a concurrency test performed in the session. The immediate result is smaller and concrete: the Very run reports 90 products, with a Unicode problem still to fix in pound-denominated prices.

8:018:15
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:01 · section reference included

Choose the right web-access interface

An audience question prompts a closer look at MCP. Levi describes a 66-tool catalog; the current README lists 69, so a present-day installation should not be expected to reproduce that exact inventory. At the request layer, the agent supplies a URL and the unlocking service handles the access work: required headers and cookies, and CAPTCHA solving with a token when needed. The agent receives page content rather than having to construct those browser-like requests itself.

For retrieval, the useful distinction is what the next stage needs:

OutputUseful when
Full HTMLDiscovering selectors or parsing page structure
scrape_as_markdown textReading content without HTML tags

Markdown reduces the material passed to the model when page structure is irrelevant. Meanwhile, the Very scraper is still working through its pound-character issue: obtaining the page and correctly representing its data are separate problems.

Levi also describes about 500 prebuilt domain APIs. For an Amazon product, for example, an agent can request structured JSON directly instead of building a custom scraper. Remote browsers cover a further class of work where retrieving a URL is insufficient and interaction is required. Together, these options let the agent choose among page content, an existing structured endpoint, and browser automation.

10:0810:12
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

10:08 · section reference included

Walmart returns a verification screen, then product data

Levi returns to Walmart with a narrower task: search for headphones and report the first result, initially without Bright Data MCP. The ordinary fetch reaches a robot-or-human security verification screen instead of the requested product results.

He then repeats the task with MCP. The agent uses scrape_as_markdown, requesting page text rather than full HTML. While the response is pending, Levi speculates that a remote browser may be dealing with Walmart’s click-and-hold verification. He describes an in-house AI CAPTCHA solver that moves and clicks controls, but the delay alone does not establish which challenge-handling operation occurred.

The request returns product names and a product list, with Levi describing the first result as a blue headphone.

Request pathObserved result
Fetch without Bright Data MCPSecurity verification screen
MCP scrape_as_markdownHeadphone product results

This comparison demonstrates the access difference for the live Walmart request. It is distinct from the earlier task of generating and reusing a scraper.

11:3811:48
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:38 · section reference included

Measure the extraction, then keep checking it

With results available, Levi asks the agent to estimate how many tokens it saved compared with parsing the pages directly with an LLM. The intended saving comes from pulling HTML and extracting data with the generated parser, rather than repeatedly sending the full page through the model.

For the Very extraction of 90 products, Levi reads an approximately 62% token saving from the agent’s input/output/total breakdown. He considers that relatively low and wonders whether the site has unusually structured HTML. The source does not establish the model, tokenizer, baseline counts, caching, or whether scraper-building costs are included, so this figure cannot be directly reconciled with the earlier million-token estimate.

The generated code is also the object the agent would maintain. Levi proposes a Claude schedule that runs or checks the scraper every 30 minutes and repairs it when it breaks. He presents the access layer as eliminating CAPTCHA and anti-bot obstacles; the live evidence supports successful access in the demonstrated request, not a guarantee across every protected site.

13:3613:53
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

13:36 · section reference included

Inspect the Python scraper, then change its inputs

Asked to show the code, Levi opens the generated scraper. It uses the Web Unlocker API to request page data, followed by a generated parser and output schema. He likens the request to MCP’s scrape_as_markdown; they share an access function, but their output interfaces differ. Web Unlocker can return raw page content or a JSON envelope, while the MCP tool returns Markdown.

The Python code exposes the requested keyword and maximum-page parameters and loops through pages to collect products. That is the important boundary: changing the search should change the function’s inputs, not require the model to rediscover the website and rewrite the parser.

Code editor displaying a Python scraper function with keyword and maximum-page parameters, a page loop, and product collection logic.
Generated Python scraper code showing keyword search and pagination.

A compact Python orchestration layer for this interface can keep retrieval and parsing separate while accumulating the results:

python

from collections.abc import Callable
from typing import Any


def collect_products(
    keyword: str,
    max_pages: int,
    fetch_page: Callable[[str, int], str],
    parse_products: Callable[[str], list[dict[str, Any]]],
) -> list[dict[str, Any]]:
    if not keyword.strip():
        raise ValueError("keyword must not be empty")
    if max_pages < 1:
        raise ValueError("max_pages must be positive")

    products: list[dict[str, Any]] = []
    for page in range(1, max_pages + 1):
        html = fetch_page(keyword, page)
        products.extend(parse_products(html))
    return products

Here, fetch_page owns the site’s search URL and access request; parse_products owns its extraction rules. The page loop can remain unchanged when those site-specific details need repair.

Levi locates the API-key and zone configuration, then asks for a second run: laptops across two pages. The agent can trigger the script, or another script can automate the invocation; the visual interface is simply his preferred way to demonstrate it.

Before the rerun finishes, Levi estimates roughly 60 tokens to invoke the script and roughly 100 to obtain the data. Those are preliminary estimates, not the later reported totals. Once the scraper produces JSON, the model can answer questions about the extracted records. The useful economy is passing selected fields instead of whole pages; JSON formatting alone does not guarantee fewer tokens than Markdown.

15:3315:45
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

15:33 · section reference included

Public access does not remove terms and legal constraints

An audience member asks whether the same system works on authenticated sites. Levi’s answer establishes the service boundary for this demonstration: public data only, with nothing behind login. He warns that creating an account means accepting terms and conditions and advises checking restrictions on scraping or robots. He points to LinkedIn litigation and Twitter’s restrictions after Musk’s acquisition as examples of the conflicts surrounding data access.

Explicit acceptance checkpoints during a search deserve the same attention. Levi describes Bright Data’s scraping workflow as avoiding login and acceptance of terms, then cites litigation victories involving Meta and X. He compares public collection to writing down prices displayed on a counter and selling those observations.

That analogy should not be read as unrestricted permission to collect and reuse anything visible online. The Meta ruling concerned particular contract claims and logged-off scraping; Bright Data’s counsel also reports dismissal of X’s claims, on grounds more specific than a blanket public-data exemption. Technical access, contractual obligations, and permitted reuse remain separate questions.

17:4417:58
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

17:44 · section reference included

Retrieving results and reading them are different costs

The laptop rerun stalls. Levi attempts manual execution, encounters variable-setting and batch-related difficulties, and then reports that the run has completed. He asks the agent how many tokens it spent obtaining the results. The interruption makes the operational boundary visible: generating a script does not eliminate configuration and execution problems.

Even for personal tasks, his default request is to build a script that the agent can reuse. For the completed rerun, Levi cites roughly 1,000 tokens to obtain the data and roughly 10,000 if the model also goes through the JSON. These later figures supersede neither the earlier estimates nor their unspecified accounting boundaries; they distinguish execution-related work from reading the returned records. His description of the cost as pennies is not accompanied by a model or pricing calculation.

19:2419:28
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

19:24 · section reference included

Protected sites and listeners that wait

Levi estimates that this MCP access is most useful for about 20% of domains, particularly heavily protected sites. He names Akamai, DataDome, and Cloudflare, with real estate and large e-commerce sites as valuable targets. His underlying chain is access → scraper construction → maintenance: the agent needs to inspect the actual site before it can build or repair the extraction. The domain percentage is his estimate, not a measured coverage result.

A listener need not collect a million records to be useful. Alongside the apartment example, Levi describes a restaurant-reservation listener that has been waiting for two months and is intended to book automatically when a spot opens. That booking is still pending. The practical extension is from collecting a dataset to watching for a specific event and acting when its condition becomes true.

21:4521:56
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

21:45 · section reference included

When the pipeline needs to click

The final audience question moves beyond scraping: can the agent fill and submit a form? Levi says yes, while retaining the no-login boundary. Flight availability is his example. A search on a service such as Skyscanner may lead to a hashed URL that the agent cannot construct directly, so it must operate the search interface instead.

For geographically restricted results, the agent can request a remote browser with a United States IP, then fill fields and click through the search. Levi says the browser infrastructure supplies prerecorded mouse movements and typing behavior: pointer movement instead of instantaneous jumps, varying typing speed, and potentially mistakes. Those behaviors are intended to make interaction telemetry resemble a person’s activity.

This division of responsibility also affects model choice. Levi says Claude Haiku is sufficient for his browsing agents when the browser infrastructure handles the behavioral masking. The model decides what to do; the browser carries out the interaction, and the generated script handles repeated extraction. That leaves model reasoning concentrated on the parts of the pipeline that need it.

23:0123:15
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

23:01 · section reference included

Resources

From the talk

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] All righty, let's dive into it.

  2. 0:17

    So, uh, in the previous session, I, I don't know how many of you were here, but I talked about how MCP gives access to LLMs to websites that are behind, uh, capture, bot detection systems, and so on.

  3. 0:30

    And in this session, I wanna talk about, um, how do you actually collect data on scales with LLM? Because a lot of times I'm seeing on Reddit and other social media is like, "Oh, I need to scan ten thousand products," but that's so many tokens if I need to parse everything with LLM.

  4. 0:44

    So obviously you don't do that, right? So

  5. 0:49

    the whole session is how do you build pipelines, right? With LLM. Instead of telling, "Hey, LLM, can you go and, uh, parse this for me?" Build a scraper that's gonna parse it for me, and I will demonstrate how easy it is, uh, with our skills, right?

  6. 1:03

    So Bright Data has skill sets that actually teaches your LLM on how to build a pipeline. With our MCP, it can actually extract HTML so that it knows what are the selectors that it needs to parse, and so on.

  7. 1:16

    So, um, the scrape tags, right? Write the scraper. Uh, I don't know, how many of you actually wrote scrapers before?

  8. 1:25

    Okay, so you know the headache when all of a sudden things are missing, data is missing, you gotta wake up. I don't know if you guys did it for clients, and clients are like, "Oh, my God, there's no..."

  9. 1:33

    So basically that's what used to be. You write a scraper, and you maintain it. As a matter of fact, sometimes you maintain it more than it, it takes, it takes you to write it, right?

  10. 1:41

    So everything, especially if the website is constantly changing or its selectors, or if it's a React website, it gets really complicated, right? So an agent, it, it, it solves all that headache, right?

  11. 1:54

    It can explore with our MCP. It understands what the data is needed. It writes the scraper, and actually runs it and executes it and maintains it. As a matter of fact, I do collections on a daily basis, and I have every thirty minutes, I have an LLM clients pool, uh, spools up.

  12. 2:09

    It checks what the data is collected, make sure that everything is fine. Everything's fine, it shuts down. If, for example, there's a, um, always set a validation for data, right?

  13. 2:18

    Let's say a data point is, uh, missing some-something, your agent fixes it, five minutes. You don't have to wake up in the middle of the night.

  14. 2:27

    Uh, so let me demonstrate. So for this demo, I wanna use Claude Code. I don't know how many of you use Claude, if you're using Codex or whatever it is.

  15. 2:37

    I prefer Claude Code. I like how it...

  16. 2:40

    I like it. It does a great job. So the way that you build scrapers now, and it's ridiculous because, you know, back in the day it took weeks to set it up.

  17. 2:49

    We created a Bright Data, like GitHub page, right? brightdata/skills. Here, basically, your agent has everything that it might need, okay? Um, scrape builders, best practices, how to... E-everything. Everything that it needs in order to build a scraper.

  18. 3:05

    And what I wanna show is, uh, first of all, uh, let's...

  19. 3:11

    I'm gonna start simple. Go to build me a scraper, and I wanted to record it because I thought it was gonna take a long time, but now it takes literally like three minutes.

  20. 3:21

    Build me a scraper, uh, two inputs, keyword search, max pages for walmart.com. Everybody's familiar with Walmart. Walmart has a very aggressive anti-bot systems. Anybody try to scrape it, um, it just doesn't work.

  21. 3:40

    But through Bright Data- The website name is wrong. I think the volume, it might be remote. It will figure it out, but you're, you're right. Let's just correct that.

  22. 3:54

    walmart.com. Um, run a search for headphones. Collect three pages.

  23. 4:08

    Uh, so what it's gonna do right now, it's gonna go to our GitHub. It's gonna get all the skill set that it needs, how to build scrapers. Then it's gonna go, uh, with the MCP that's already connected to the Claude.

  24. 4:18

    It's gonna extract the HTML from the page. Uh, it's gonna find all the selectors that it needs, and it's gonna build you a scraper. And, uh,

  25. 4:29

    so right now you can see a scrape_as_markdown is basically extracting the, the, the, the text, right? So for the skills, we don't need the HTML, we just need the text.

  26. 4:38

    Uh, scrape_as_markdown is a part of the MCP, of Bright Data MCP. Uh, Bri-- Uh, the MCP has five thousand requests for free, so if anybody wants to try it, you guys can try it for free.

  27. 4:48

    Um, you will need to just open an account with Bright Data, which it doesn't cost you anything. And

  28. 4:58

    let it do its thing. So why is this better than having an LLM parse every single page, every HTML? It's... I'm, I'm literally, afterwards I'm gonna ask it to tell you how many, how much tokens it saves.

  29. 5:12

    So for the three pages, I've done this before, it saves about a million tokens just to, from building the scraper, uh, and using a script to parse the HTML.

  30. 5:23

    And, um, even if you are not doing any scraping for production, but let's say that you wanna find the be-best headphones for the money, right? It used to be you go to Google, you go to some CNET where they, uh, compare everything.

  31. 5:38

    But here you can use the we- the marketplace reviews. So I can tell it, like, "Hey, hey, um, scan the five pages. Find me the best, uh, reviewed headphones."

  32. 5:48

    So it could be even useful for you as a personal, in, in a personal way, right? So instead of it getting blocked, it can actually find you things that you need on websites that are behind Cloudflare.

  33. 6:00

    Oh, I forgot to delete the old one.

  34. 6:05

    No, no. Stop, stop, stop. Hold on a second.

  35. 6:09

    Delete the old scraper. Scr- scraper. I totally... I was testing it, and I totally forgot to clean up.

  36. 6:20

    Uh, let's do a different website. Pick a website. What's a popular marketplace in, uh, that's aggressive in blocking in UK?

  37. 6:28

    Amazon.

  38. 6:29

    Amazon, it's, uh, not that aggressive. You'll be surprised. I can scrape it with data center IPs. What's a popular website that everybody uses here?

  39. 6:37

    Very. Very.

  40. 6:39

    Ve-

  41. 6:39

    V-E-R-Y.com [door squeaking]

  42. 6:43

    V- Very?

  43. 6:47

    Very.

  44. 6:47

    Like that?

  45. 6:49

    [REDACTED:url]

  46. 6:50

    Y.com?

  47. 6:50

    Yeah.

  48. 6:53

    Oh, that's UK?

  49. 6:55

    Yeah.

  50. 6:55

    Okay, perfect. So this way, I don't f- I don't wanna... Stop it. New session.

  51. 7:04

    Uh, uh, uh, that's that. Let's do that.

  52. 7:11

    Where's the new session? Oh, there it is.

  53. 7:20

    Really? What is wrong with my paste? Okay.

  54. 7:34

    Uh, it's clothing store?

  55. 7:36

    Uh, it's general. Headphones, you know, a bit.

  56. 7:38

    Okay, so let's do headphones again, the same thing, right? So I don't know, I've never used this website. I've...

  57. 7:46

    L- Clean test. No cheating. [laughs] Um, so, so what else does this give you? So again, market research.

  58. 8:01

    Um, for example, I was looking for a new apartment, right? I was wanting to move a house. So with a Claude code, with Bright Data, I set up a listener, literally just telling, "Hey, listen, build me a scraper that will run every half an hour.

  59. 8:15

    When in this area, there's a, a house, private house under this price, notify me." That's all I did. In a few days, I got a notification, and now I live there.

  60. 8:24

    So these things are not only useful on a scale where, you know, oh, I need to scrape millions of records, but even for your personal use. It's so easy these days.

  61. 8:35

    Claude Code does an amazing job, right? I know, uh, Codex does a great job as well, but I prefer Claude Code because, I don't know, it just, um, gives me less headache.

  62. 8:45

    Codex sometimes takes me on a wild goose chase.

  63. 8:49

    Um, how many of you have used Hypecode?

  64. 8:54

    It's, it's amazing. Why not, right? Anybody can build anything now. Um,

  65. 9:00

    so did you build it? I've got the structure, the search parameters, and with third version, let me build... Oh, okay, it's building a scraper. Um,

  66. 9:07

    this used to take, I don't know, if f- you're having a good day, maybe a full day, maybe a day and a half, right? You need to go check out the selectors, figure it out.

  67. 9:16

    It used to be interesting and fun, but you don't need to do that anymore. So what I'm sh- trying to show you guys is that

  68. 9:24

    with our MCP, with our infrastructure, we have over 150 million IPs. Uh, with our unlocking technology, where we-- if the- if it needs to run a remote browser, so if you wanna...

  69. 9:37

    It can actually write you a browser automation. Uh, the browsers are running on our system. So I can literally right now open a thousand browsers on this laptop that are running on our servers, and they can go do things, whatever you need it to.

  70. 9:50

    So it already got 90 products. Okay, it just needs to fix the Unicode because it's in pounds.

  71. 10:05

    Eh, uh-uh, uh-uh, almost done.

  72. 10:08

    Can you also, um, go into details about the MCP, or is that-

  73. 10:12

    Sure. I did it in a previous session, but while it's loading, let me tell you. So basically, the MCP gives you, uh, a agent 66 tools. Uh, some of them is basically, um, we have a system where it can send a cURL to any URL, and our system will literally get the HTML back.

  74. 10:28

    It will solve a CAPTCHA if needed and send it with a token. It will, uh, it, it knows exactly what headers and cookies the website needs. So basically, it will make sure that the server thinks it's a browser and serve the HTML back.

  75. 10:39

    So your agent can literally send cURLs, pull data without any questions. It can pull a full HTML. It can pull just a scrape as a Markdown. Markdown, it's, it's to save tokens, right?

  76. 10:49

    You just want the text of the page. You don't care about the HTML tags.

  77. 10:54

    It doesn't like the pound. Come on, you can do it.

  78. 11:00

    Um, so that's number one. Second, we have about 500 different APIs pre-built for different domains. So instead of actually getting a Markdown, you can actually get a JSON of the product.

  79. 11:11

    For example, for Amazon, we have pre-built API. You can listen... Uh, when you add your agent, it can be like, "Okay, go and check on Amazon something." It doesn't even need to build a scraper.

  80. 11:19

    It can literally just send the, uh, the request and get the data back. Um, on top of that, remote browser infrastructure and, uh, anything that needs, uh, anything that your agent needs to access the web, it has, right?

  81. 11:33

    So you don't get blocked. While this is running, I wanna show you, for example,

  82. 11:38

    uh, tell... Wait, do Walmart, do a search for headphones without

  83. 11:48

    MCP. What?... So I'm telling it, "Go to Walmart, do a search for headphones, and tell me what is the first result without the Bright Data MCP."

  84. 11:59

    Uh, it's gonna do a fetch, which is gonna get blocked.

  85. 12:07

    Product security verification screen. Robot or human, obviously, right? That's, that's the first thing.

  86. 12:13

    Now do the same with Bri-- Um, oh my God.

  87. 12:27

    So now it's using scrape as a markdown. It's doing a search. It's only pulling the text. It's not pulling the HTML, just the text itself.

  88. 12:45

    Always, when you do a live, it slows down. [laughs] The time is like [exhales]

  89. 12:51

    It's more people clicking the bots than you.

  90. 12:55

    Oh, actually it could be. It could be opening a browser and actually holding the button. You know, the Walmart has, like, one of those click and hold, and it needs to hold it for, like, thirty seconds, so it could be doing that right now.

  91. 13:05

    So, uh- People are capturing right now. We, we have built a CAPTCHA-solving solution. Like, we literally have in-house... We have a AI-solving CAPTCHA and

  92. 13:16

    moving, clicking things, and like, wow, it's perfect. So it already got

  93. 13:22

    first result, blue headphone. Uh, basically, there you go. It already has the results of the headphones without robot or human, with full product list and name. Uh, so we here already have output.

  94. 13:36

    Tell me, if you were to do this manually, how ma- how much more tokens have you used? How many did you save? Let's just give it a breakdown, and this is probably the biggest issue, right?

  95. 13:53

    Tokens is expensive. I'm going through millions and millions of tokens a day. I used to go more, but I, I optimized it. So, um, all of you are looking, how do we save money on LLM?

  96. 14:04

    How do we waste less tokens of web access? And, um, Bright Data has the solution. Instead of parsing the full HTML, create a scraper. Uh, instead of using, um, you know...

  97. 14:15

    Okay, it pulls the HTML and it extracts the data. It builds the scr-- uh, the parser.

  98. 14:22

    But it's working very slow right now. I feel like everybody's Vycoding. So basically, here's the breakdown, right? What do we have here?

  99. 14:31

    The big screens output [mumbling] parsing ninety products would...

  100. 14:37

    Input tokens, output tokens, total save. So it's about a sixty-two percent save of tokens. This is not a high number. This website, I guess, uh, it has, uh, maybe a structured, um, HTML, I'm not sure.

  101. 14:55

    But this is what I wanted to show you. And the best thing about it is that it will maintain it. If it breaks it, it will fix it. I can set up a loop, right?

  102. 15:03

    So for example, in Claude, I can set a schedule. Every thirty minutes, you do and run and check something, and this is what we are giving you guys, okay?

  103. 15:10

    With our MCP, your agent has access to all the web, uh, without getting blocked. No CAPTCHA will stop it. No robots, anti-bot systems will stop it, and, uh, you have no headaches of that.

  104. 15:23

    I don't know how many of you have... You guys probably dealt with blocking, right? When you build a scraper, it gets a little complicated. So this kinda removes all the headache for it.

  105. 15:33

    Um, any questions? Where is the code? Excuse me? The code, the code to generate the scraper, right? Uh, what is- Oh, I can... If you, you wanna see the code?

  106. 15:45

    I mean, it's here. We have the scraper. Let's check it out.

  107. 16:03

    So it's using API Web Unlocker. This is the same thing as a scrape as a markdown with an MCP. It sends a simple request and gets the data back.

  108. 16:12

    This is the parser that it built. I mean,

  109. 16:22

    it looks pretty good. This is the, the schema that it built for the output.

  110. 16:28

    It's doing a keyword search. It has the max page, right? So I als-- for two inputs, the keyword search and how many pages to scrape.

  111. 16:38

    And hold on. Let's see, let's see. We can run it through here as well. Where's the variables? API key, Zoom key. [humming]

  112. 16:52

    Let's run it. Do another run on laptops. What are the two pages results? [clears throat]

  113. 17:04

    And now you kinda control it. Like, you don't even need to run it, right? It will trigger it for you. It will maintain it for you. Um, you can create a script that will automatically do all of this.

  114. 17:14

    I prefer the visual interface for dem-demonstration. Sometimes, you know, like, looking at our code, it's a little more complicated. But right now, basically, I can ask it any questions.

  115. 17:23

    It will actually run the script, so it's not wasting tokens. To execute the script, maybe, like, sixty tokens, right, right now. So it's gonna literally get all this data for a hundred tokens, and then you can do whatever.

  116. 17:34

    You can ask it questions about it, but now we're working with a JSON. A JSON is much more token efficient than any markdown or any other file, right?

  117. 17:44

    Slow than usual. Can I ask, can you, can you do this on all-- with authorization site as well? Uh, no. We only talk, we only deal with public data.

  118. 17:58

    So behind login, it's, um, it's private data. And, and, uh, just, you know, just a heads-up. If you create an account, you accept terms and conditions of the website.

  119. 18:08

    Always check terms and conditions of the website. If they say, "Don't scrape," "Don't use robots," and you do, then that company can actually sue you, and this is happening, uh, you probably heard in the news all the time.

  120. 18:18

    LinkedIn is suing them. Everybody's suing each other because- They, the data right now is like the new gold, the oil, right? Everybody's trying, like, "Oh, this is my data."

  121. 18:27

    Elon Musk took over Twitter, locked it down. That's it. Literally, like, the, it used to be so open, and now it's all locked in. A few accounts that you can actually scrape.

  122. 18:36

    So we're seeing this on every single level.

  123. 18:41

    Very slow today. Um, so yes, also same thing. If you accept, uh, there's like a terms and ag- like, if you do a search and there's a checkpoint, I accept terms and conditions, always be careful with that.

  124. 18:52

    So we only deal with public data, so nothing behind login. We don't accept terms and conditions, and we actually won a few lawsuits. We were sued by Meta. We were s-sued by Elon Musk a month after he took over, and, uh, the judge said it's very simple.

  125. 19:07

    Public data is public data. It doesn't matter how you collect it, doesn't matter what you do with it, it's public. You know? It's like walking on the street, you write down the prices on the counter, and then you sell it to somebody.

  126. 19:18

    It's public data. It's available. You can do whatever you want with it. Okay? So,

  127. 19:24

    as usual, it gets stuck on a live demo, but

  128. 19:28

    we can, we can run this manually. Oh, my God.

  129. 20:00

    What the... I was setting a variable, it's doing this.

  130. 20:05

    It's not gonna work. It's from that batch.

  131. 20:16

    What am I missing? Still stuck? Oh, okay. It's done. Okay, so here we got, we got...

  132. 20:28

    Let's see. How many tokens, how many tokens did you spend on getting the- these?

  133. 20:43

    So even if you're not bui- building pipelines for any, um, you know, big companies, and you don't need to sc- for personal use, I always have the MCP connected.

  134. 20:51

    I don't ask the, you know, LLM to go do. I always ask, build a script that can later on be used by it. It's using its own script to save the tokens.

  135. 21:10

    Literally, like, we're talking about 1,000 tokens here. If, uh, you know, if, if it needs to s- go through the JSON, it's like 10,000 tokens. We're talking about, like, literally pennies compared to what it would be to actually scrape it.

  136. 21:22

    Any more questions? How about this? Anybody has problems with actually getting data?

  137. 21:30

    No, no question. Ev- everybody is like, "Oh, yeah, I'm not sharing my problems. I have no problems." And then they go home and like, "Oh, I do have a problem."

  138. 21:37

    But in any case, listen, we have a booth. If you don't, if you wanna talk in private and you have questions about data or access or LLM, feel free.

  139. 21:45

    I'm always willing to help. Um, we can connect on LinkedIn, by the way, guys, if you want. Let me just summarize a few things what we did here. So, um, self-healing pipeline.

  140. 21:56

    When you have, when your agent actually has access to a blocked website and you're working... I mean, the MCP is mostly useful in about 20% of the, of the domains, right?

  141. 22:06

    The ones that have Akamai, Datadome, Cloudflare, those heavy protected domains. They are the usually the most juiciest one, right? Like real estate or, uh, big e-commerce places. Uh, with our MCP, it has access to it.

  142. 22:19

    If it has access to it, it can build a scraper. If it can build a scraper, it can maintain the scraper. This is basically the whole thing that I wanted to show you.

  143. 22:25

    That in Bright Data, we have all the tools that your agent might need to explore, to build and maintain, uh, a pipeline, right? So if you wanna set up a listener for an apartment and you're looking to move into a cheaper place, or maybe you wanna book a table in a restaurant where it's always packed, and literally,

  144. 22:45

    I, I, I have a listener right now waiting for two months already. Everybody's, like, booking right away. So as soon as a spot opens, it will automatically book a spot for me.

  145. 22:52

    It can be very useful in just kinda like even, even the small things, personal things, right? I'm not talking about just enterprise scale, where I need to download a million records, okay?

  146. 23:01

    But having access to all the websites, it's, it's, it's important. So apart from scraping, can you also do actions on the website? Yes. Of course. Fill a form. Fill up a form, submit it as well, yes.

  147. 23:15

    The only thing you can't do is log in,

  148. 23:19

    right? So if you have, um, let's say you need to perform a search, right? You cannot generate the URL, you need to click button. Let's say flights. You wanna check flights availability, Skyscanner or something like that, right?

  149. 23:30

    The URL is usually a hash, and you can't, uh, do anything with it. So yes, LLM can spawn a browser, remote browser. Even if it's a geo-restricted site, it can be like, "Okay, I want IP from the United States."

  150. 23:41

    So it's open a browser with the United States IP, and then it goes and clicks things, fills it up, and so on. The beauty of it is that our browser will mimic real human behavior.

  151. 23:50

    So when your agent clicks, it's not a teleportation. There's a mouse pre-recorded, like a real human being moving it. When it types, it will type a little slower, speed up, like maybe even mistake, and so on.

  152. 24:00

    So we have pre-recorded typing, we have pre-recorded mouse movements. So if the website has a tracker that's constantly sending to the server what the user is doing, it will look like a real human being.

  153. 24:10

    Doesn't matter what your agent, even if it's a low, like, um, uh, for browsing agents, um, I'm never use the top models, right? For example, if with Claude, a Haiku model is more than enough for browsing.

  154. 24:20

    If it's being masked that it's a real human, it works just fine.

  155. 24:27

    Um, so that's pretty much it. If you guys wanna connect on LinkedIn, feel free. I'm always willing to help. If you have any questions regarding how to get data, if you have problems with accessing anything, feel free to message me.

  156. 24:40

    I feel like there's been so much more than 15 minutes. I love it. It's the second time I'm doing a speech and I got, like, half an hour instead of 15 minutes.

  157. 24:46

    It's amazing. Um, now's the time if you have any questions, discussions.

  158. 24:55

    No, nothing. Great. Okay, guys, I guess I will conclude this session on this. Uh, feel free to come to the booth on the third floor if you have more questions, and, um,

  159. 25:04

    let's keep the public data public. [laughs] Thank you. [clapping] [outro music]