HTTP Requests in Bright Data IDE

🚀 Making HTTP Requests in Bright Data IDE

Modern websites rely heavily on APIs. Bright Data IDE provides multiple powerful ways to work directly with those APIs. This guide explains request, tag_request, tag_response, and tag_all_responses with clean, production-ready examples.


1️⃣ request() – Direct HTTP Request

Use request() when you want to fetch data directly from an API without browser interaction.

Simple GET Request


let res = request('http://www.example.com');

POST Request with Headers


let res = request({
  url: 'http://www.example.com',
  method: 'POST',
  headers: {
    'Content-type': 'application/json; charset=utf-8'
  },
  body: { hello: 'world' }
});

Pagination Example


const itemsPerPage = 20;
let currentPage = 1;
let totalPages = Infinity;

while (currentPage <= totalPages) {
  const targetUrl =
    `https://open-pro.dict.naver.com/ivo-data/dict/dictList` +
    `?currentPage=${currentPage}` +
    `&pageSize=${itemsPerPage}` +
    `&dictType=0&orderType=0&themeCode=`;

  const response = await request({
    url: targetUrl,
    method: 'GET',
    headers: {
      'Accept': 'application/json',
      'User-Agent': 'Mozilla/5.0'
    }
  });

  if (response.statusCode !== 200) {
    console.error(`Page ${currentPage} failed`);
    currentPage++;
    continue;
  }

  const data = JSON.parse(response.body);

  if (!data?.data?.items?.length) {
    console.log('No more dictionaries found');
    break;
  }

  if (currentPage === 1 && data?.data?.totalPage) {
    totalPages = data.data.totalPage;
  }

  currentPage++;
}

2️⃣ tag_request() – Tagged API Request

tag_request() allows you to fire an API request and retrieve the response later inside parser code.

Basic Usage


tag_request('req1', 'http://www.example.com');
let response = wait_for_parser_value('req1');

Real-World Product API Example


const current_sku = location.href.split('/').pop().split('?')[0];
const apiUrl =
  `https://www.loewe.com.cn/rest/cn/V1/applet/product/${current_sku}`;

const tagName = 'api_req_single';

tag_request(tagName, {
  url: apiUrl,
  method: 'GET',
  headers: {
    'accept': 'application/json, text/plain, */*',
    'content-type': 'application/json'
  }
});

try {
  wait_for_parser_value(tagName, 10000);
} catch (e) {
  console.log('Timeout waiting for tag_request');
}

let api_response = null;
if (parser[tagName]?.value) {
  api_response =
    typeof parser[tagName].value === 'string'
      ? JSON.parse(parser[tagName].value)
      : parser[tagName].value;
}

3️⃣ tag_response() – Capture Browser Network Responses

Use this when an API call is triggered automatically during page load.


tag_response('teams', /\/api\/teams/);
navigate('https://example.com/sports');

const teams = parse().teams;

Advanced Matching


tag_response('resp', (req, res) => {
  if (req.url.includes('/api/')) {
    let response_body = res.body;
  }
});

4️⃣ tag_all_responses() – Capture Multiple API Calls

Best suited for pagination APIs or repeated background requests.


tag_all_responses('profiles', /\/api\/profile/);
navigate('https://example.com/sports');

let profiles = wait_for_parser_value('profiles');

// parser code
return { profiles };

✅ Best Practice: Whenever possible, prefer API-based extraction over DOM scraping for better performance and stability.