← HTTP / Webhook + Browserless integrations

Take a Screenshot with Browserless API on New event when the content of the URL changes. from HTTP / Webhook API

Pipedream makes it easy to connect APIs for Browserless, HTTP / Webhook and 1000+ other apps remarkably fast.

Trigger workflow on
New event when the content of the URL changes. from the HTTP / Webhook API
Next, do this
Take a Screenshot with the Browserless API
No credit card required
Into to Pipedream
Watch us build a workflow
Watch us build a workflow
7 min
Watch now ➜
Trusted by 250,000+ developers from startups to Fortune 500 companies:
Trusted by 250,000+ developers from startups to Fortune 500 companies

Developers Pipedream

Getting Started

This integration creates a workflow with a HTTP / Webhook trigger and Browserless action. When you configure and deploy the workflow, it will run on Pipedream's servers 24x7 for free.

  1. Select this integration
  2. Configure the New event when the content of the URL changes. trigger
    1. Connect your HTTP / Webhook account
    2. Configure Watching timer
    3. Configure HTTP Request Configuration
    4. Configure Emit body only
    5. Configure Emit as array
  3. Configure the Take a Screenshot action
    1. Connect your Browserless account
    2. Configure URL
  4. Deploy the workflow
  5. Send a test event to validate your setup
  6. Turn on the trigger

Details

This integration uses pre-built, open source components from Pipedream's GitHub repo. These components are developed by Pipedream and the community, and verified and maintained by Pipedream.

To contribute an update to an existing component or create a new component, create a PR on GitHub. If you're new to Pipedream component development, you can start with quickstarts for trigger span and action development, and then review the component API reference.

Trigger

Description:Emit new event when the content of the URL changes.
Version:0.0.2
Key:http-watch-url

Trigger Code

import http from "../../http.app.mjs";
import hash from "object-hash";
import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform";

export default {
  key: "http-watch-url",
  name: "New event when the content of the URL changes.",
  description: "Emit new event when the content of the URL changes.",
  version: "0.0.2",
  type: "source",
  dedupe: "unique",
  props: {
    http,
    timer: {
      type: "$.interface.timer",
      label: "Watching timer",
      description: "How often to watch the URL.",
      default: {
        intervalSeconds: DEFAULT_POLLING_SOURCE_TIMER_INTERVAL,
      },
    },
    httpRequest: {
      type: "http_request",
      label: "HTTP Request Configuration",
      description: "HTTP Request Configuration",
      default: {
        method: "GET",
      },
    },
    emitBodyOnly: {
      label: "Emit body only",
      description: "If set as true the emitted item will contain only the response body, otherwise, it will include the request status code.",
      type: "boolean",
      default: true,
    },
    emitAsArray: {
      label: "Emit as array",
      description: "If the request responds with an array, this source will emit changes individually for each item of the array.",
      type: "boolean",
      default: false,
    },
  },
  methods: {
    getMeta(data, status) {
      if (this.emitBodyOnly) {
        return data;
      }
      return {
        data,
        status,
      };
    },
    emitArray(event, response) {
      if (!Array.isArray(response.data)) {
        return this.emitAny(event, response);
      }
      for (const item of response.data) {
        const meta = this.getMeta(item, response.status);
        this.emit(event, meta);
      }
    },
    emitAny(event, response) {
      const meta = this.getMeta(response.data, response.status);
      this.emit(event, meta);
    },
    emit(event, meta) {
      const ts = event.timestamp || Math.round(Date.now() / 1000);
      this.$emit(meta, {
        id: hash(meta),
        summary: `Requested at ${ts}`,
        ts,
      });
    },
  },
  async run(event) {
    const response = await this.httpRequest.execute();
    if (this.emitAsArray) {
      this.emitArray(event, response);
    } else {
      this.emitAny(event, response);
    }
  },
};

Trigger Configuration

This component may be configured based on the props defined in the component code. Pipedream automatically prompts for input values in the UI and CLI.
LabelPropTypeDescription
HTTP / WebhookhttpappThis component uses the HTTP / Webhook app.
Watching timertimer$.interface.timer

How often to watch the URL.

HTTP Request ConfigurationhttpRequesthttp_request

HTTP Request Configuration

Emit body onlyemitBodyOnlyboolean

If set as true the emitted item will contain only the response body, otherwise, it will include the request status code.

Emit as arrayemitAsArrayboolean

If the request responds with an array, this source will emit changes individually for each item of the array.

Trigger Authentication

The HTTP / Webhook API does not require authentication.

About HTTP / Webhook

Get a unique URL where you can send HTTP or webhook requests

Action

Description:
Version:0.5.1
Key:browserless-take-screenshot

Browserless Overview

Browserless allows you to build websites and applications that can be used
without a web browser. This means that you can create apps that can be used
offline, or that can be used on devices that don't have a web browser
installed.

Some examples of things that you can build using Browserless are:

  • A website that can be used without a web browser
  • An app that can be used offline
  • A app that can be used on devices that don't have a web browser installed

Action Code

// legacy_hash_id: a_oViVKv
import puppeteer from "puppeteer-core";

export default {
  key: "browserless-take-screenshot",
  name: "Take a Screenshot",
  version: "0.5.1",
  type: "action",
  props: {
    browserless: {
      type: "app",
      app: "browserless",
    },
    url: {
      type: "string",
      label: "URL",
      description: "Enter the URL you'd like to take a screenshot of here",
    },
  },
  async run({ $ }) {
    const browser = await puppeteer.connect({
      browserWSEndpoint: `wss://chrome.browserless.io?token=${this.browserless.$auth.api_key}`,
    });
    const page = await browser.newPage();

    const { url } = this;
    await page.goto(url);
    const screenshot = await page.screenshot();

    // export the base64-encoded screenshot for use in future steps,
    // along with the image type and filename
    $.export("screenshot", Buffer.from(screenshot, "binary").toString("base64"));
    $.export("type", "png");
    $.export(
      "filename",
      `${url.replace(/[&\/\\#, +()$~%.'":*?<>{}]/g, "_")}-${+new Date()}.${this.type}`,
    );

    await browser.close();
  },
};

Action Configuration

This component may be configured based on the props defined in the component code. Pipedream automatically prompts for input values in the UI.

LabelPropTypeDescription
BrowserlessbrowserlessappThis component uses the Browserless app.
URLurlstring

Enter the URL you'd like to take a screenshot of here

Action Authentication

Browserless uses API keys for authentication. When you connect your Browserless account, Pipedream securely stores the keys so you can easily authenticate to Browserless APIs in both code and no-code steps.

Sign-up for a browserless account, it will create a unique token that allows service interaction.

About Browserless

Powerful browser automation built for developers

More Ways to Connect Browserless + HTTP / Webhook

Take a Screenshot with Browserless API on New Requests (Payload Only) from HTTP / Webhook API
HTTP / Webhook + Browserless
 
Try it
Take a Screenshot with Browserless API on New Requests from HTTP / Webhook API
HTTP / Webhook + Browserless
 
Try it
Generate PDF from HTML String with Browserless API on New Requests (Payload Only) from HTTP / Webhook API
HTTP / Webhook + Browserless
 
Try it
Generate PDF from HTML String with Browserless API on New Requests from HTTP / Webhook API
HTTP / Webhook + Browserless
 
Try it
Generate PDF from HTML String with Browserless API on New event when the content of the URL changes. from HTTP / Webhook API
HTTP / Webhook + Browserless
 
Try it
New Requests from the HTTP / Webhook API

Get a URL and emit the full HTTP event on every request (including headers and query parameters). You can also configure the HTTP response code, body, and more.

 
Try it
New Requests (Payload Only) from the HTTP / Webhook API

Get a URL and emit the HTTP body as an event on every request

 
Try it
New event when the content of the URL changes. from the HTTP / Webhook API

Emit new event when the content of the URL changes.

 
Try it
Send any HTTP Request with the HTTP / Webhook API

Send an HTTP request using any method and URL. Optionally configure query string parameters, headers, and basic auth.

 
Try it
Send GET Request with the HTTP / Webhook API

Send an HTTP GET request to any URL. Optionally configure query string parameters, headers and basic auth.

 
Try it
Send POST Request with the HTTP / Webhook API

Send an HTTP POST request to any URL. Optionally configure query string parameters, headers and basic auth.

 
Try it
Send PUT Request with the HTTP / Webhook API

Send an HTTP PUT request to any URL. Optionally configure query string parameters, headers and basic auth.

 
Try it
Return HTTP Response with the HTTP / Webhook API

Use with an HTTP Source that uses Return a custom response from your workflow as its HTTP Response

 
Try it