How do you send a POST request in Puppeteer?

Getting the “order” right can be a bit of a challenge. Documentation doesn’t have that many examples… there are some juicy items in the repository in the example folder that you should definitely take a look at.

https://github.com/GoogleChrome/puppeteer/tree/main/examples

Here is the example; place the following into an async block:

// Create browser instance, and give it a first tab
const browser = await puppeteer.launch();
const page = await browser.newPage();

// Allows you to intercept a request; must appear before
// your first page.goto()
await page.setRequestInterception(true);

// Request intercept handler... will be triggered with 
// each page.goto() statement
page.on('request', interceptedRequest => {

    // Here, is where you change the request method and 
    // add your post data
    var data = {
        'method': 'POST',
        'postData': 'paramFoo=valueBar&paramThis=valueThat'
    };

    // Request modified... finish sending! 
    interceptedRequest.continue(data);
});

// Navigate, trigger the intercept, and resolve the response
const response = await page.goto('https://www.example.com/search');     
const responseBody = await response.text();
console.log(responseBody);

// Close the browser - done! 
await browser.close();

Leave a Comment