← Phantombuster + Formatting integrations

[Date/Time] Compare Dates with Formatting API on New Output Created Event from Phantombuster API

Pipedream makes it easy to connect APIs for Formatting, Phantombuster and 2,000+ other apps remarkably fast.

Trigger workflow on
New Output Created Event from the Phantombuster API
Next, do this
[Date/Time] Compare Dates with the Formatting API
No credit card required
Intro to Pipedream
Watch us build a workflow
Watch us build a workflow
4 min
Watch now ➜

Trusted by 800,000+ developers from startups to Fortune 500 companies

Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo
Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo

Developers Pipedream

Getting Started

This integration creates a workflow with a Phantombuster trigger and Formatting 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 Output Created Event trigger
    1. Connect your Phantombuster account
    2. Configure timer
    3. Select a Agent ID
  3. Configure the [Date/Time] Compare Dates action
    1. Connect your Formatting account
    2. Configure Start Date
    3. Optional- Select a Input Format
    4. Configure End Date
  4. Deploy the workflow
  5. Send a test event to validate your setup
  6. Turn on the trigger

Details

This integration uses pre-built, source-available 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 events when new outputs are created. [See the docs here](https://hub.phantombuster.com/reference/get_agents-fetch-output-1)
Version:0.0.1
Key:phantombuster-new-output

Phantombuster Overview

Phantombuster is a powerful API that enables users to build efficient web
automation solutions. It provides a pool of services and tools to help users
quickly, easily and securely interact with multiple websites at once.

With Phantombuster, users can create custom automated solutions to perform
various tasks such as data extraction, lead generation, marketing automation,
and web scraping. Here are a few of the things users can build using
Phantombuster:

  • Data extraction - Phantombuster's API allows users to quickly and securely
    extract data from multiple sites and APIs, allowing users to access large
    amounts of data at once and extract only what they need.
  • Lead generation - Phantombuster's API connects to multiple social networks
    and websites, allowing users to quickly and accurately gather leads or
    potential contacts and store them into a database.
  • Automated marketing campaigns - Phantombuster's API enables users to create
    and launch automated marketing campaigns, automating the entire process and
    saving time and money.
  • Web scraping - Phantombuster's API allows users to scrape entire webpages or
    just parts of it, enabling streamlined data years.
  • Robot monitoring - Phantombuster's API enables users to monitor robots,
    allowing them to keep an eye on their tasks and ensuring their bots are
    running as efficiently as possible.
  • Data analytics - Phantombuster's API allows users to easily analyze and
    visualize their gathered data, allowing them to quickly make decisions based
    on their collected data.

Trigger Code

import app from "../../phantombuster.app.mjs";
import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform";

export default {
  key: "phantombuster-new-output",
  name: "New Output Created Event",
  description: "Emit new events when new outputs are created. [See the docs here](https://hub.phantombuster.com/reference/get_agents-fetch-output-1)",
  version: "0.0.1",
  type: "source",
  props: {
    app,
    timer: {
      type: "$.interface.timer",
      default: {
        intervalSeconds: DEFAULT_POLLING_SOURCE_TIMER_INTERVAL,
      },
    },
    db: "$.service.db",
    agentId: {
      propDefinition: [
        app,
        "agentId",
      ],
    },
  },
  methods: {
    setLastUpdated(lastUpdated) {
      this.db.set("lastUpdated", lastUpdated);
    },
    getLastUpdated() {
      return this.db.get("lastUpdated") || 0;
    },
    setLastContainerId(lastContainerId) {
      this.db.set("lastContainerId", lastContainerId);
    },
    getLastContainerId() {
      return this.db.get("lastContainerId") || 0;
    },
  },
  async run() {
    const resp = await this.app.getOutput({ //always there is one last output for an agent
      params: {
        id: this.agentId,
      },
    });
    if (this.getLastContainerId() != resp.containerId ||
      (resp.mostRecentEndedAt && this.getLastUpdated() < resp.mostRecentEndedAt)) {
      this.$emit(
        resp,
        {
          id: resp.mostRecentEndedAt || Date.now(),
          summary: resp.output,
          ts: resp.mostRecentEndedAt || Date.now(),
        },
      );
      this.setLastUpdated(resp.mostRecentEndedAt);
      this.setLastContainerId(resp.containerId);
    }
  },
};

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
PhantombusterappappThis component uses the Phantombuster app.
timer$.interface.timer
N/Adb$.service.dbThis component uses $.service.db to maintain state between executions.
Agent IDagentIdstringSelect a value from the drop down menu.

Trigger Authentication

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

Your API key resides in your Phantombuster Org settings page. This page is also accessible through your navbar's menu, under the label "Org settings". Please notice that for security reasons, you key will only be shown once, on creation. You better copy it in a safe place before refreshing or leaving the page.

For more info, refer to Phantombuster's API documentation.

About Phantombuster

Code-free automations and data extraction. Chain actions and data extraction on the web to generate business leads, marketing audiences and overall growth. Phantombuster gives you the tools and know-how to grow your business faster.

Action

Description:Get the duration between two dates in days, hours, minutes, and seconds along with checking if they are the same.
Version:0.0.4
Key:formatting-compare-dates

Action Code

import { defineAction } from "@pipedream/types";
import commonDateTime from "../../common/date-time/commonDateTime.mjs";
import app from "../../app/formatting.app.mjs";
import { DATE_TIME_UNITS } from "../../common/date-time/dateTimeUnits.mjs";
export default defineAction({
    ...commonDateTime,
    name: "[Date/Time] Compare Dates",
    description: "Get the duration between two dates in days, hours, minutes, and seconds along with checking if they are the same.",
    key: "formatting-compare-dates",
    version: "0.0.4",
    type: "action",
    props: {
        ...commonDateTime.props,
        inputDate: {
            propDefinition: [
                app,
                "inputDate",
            ],
            label: "Start Date",
            description: "Enter start date string, in the format defined in `Input Format`. If the start date is after the end date, these dates will be swapped and in the output `datesSwapped` will be set to `true`.",
        },
        endDate: {
            propDefinition: [
                app,
                "inputDate",
            ],
            label: "End Date",
            description: "Enter end date string, in the format defined in `Input Format`. Timezone is assumed the same for both dates if not explicitly set.",
        },
    },
    async run({ $ }) {
        const startDateObj = this.getDateFromInput(this.inputDate);
        const endDateObj = this.getDateFromInput(this.endDate);
        const startValue = startDateObj.valueOf();
        const endValue = endDateObj.valueOf();
        const datesSwapped = startValue > endValue;
        let result = "equal";
        let remainingValue = Math.abs(endValue - startValue);
        if (remainingValue) {
            const arrResults = [];
            const arrUnits = Object.entries(DATE_TIME_UNITS).sort((a, b) => b[1] - a[1]);
            for (const [word, unit,] of arrUnits) {
                const amount = Math.floor(remainingValue / unit);
                if (amount) {
                    arrResults.push(`${amount} ${amount === 1
                        ? word
                        : `${word}s`}`);
                    remainingValue %= unit;
                    if (!remainingValue)
                        break;
                }
            }
            result = arrResults.join(", ");
        }
        $.export("$summary", "Successfully compared dates");
        return {
            datesSwapped,
            result,
        };
    },
});

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
FormattingappappThis component uses the Formatting app.
Start DateinputDatestring

Enter start date string, in the format defined in Input Format. If the start date is after the end date, these dates will be swapped and in the output datesSwapped will be set to true.

Input FormatinputFormatstringSelect a value from the drop down menu:{ "label": "Sun Jan 22 23:04:05 -0000 2006", "value": "ddd MMM DD HH:mm:ss Z YYYY" }{ "label": "January 22 2006 23:04:05", "value": "MMMM DD YYYY HH:mm:ss" }{ "label": "January 22 2006", "value": "MMMM DD YYYY" }{ "label": "Jan 22 2006", "value": "MMM DD YYYY" }{ "label": "2006-01-22T23:04:05", "value": "YYYY-MM-DDTHH:mm:ss" }{ "label": "2006-01-22T23:04:05-0000", "value": "YYYY-MM-DDTHH:mm:ss" }{ "label": "2006-01-22 23:04:05 -0000", "value": "YYYY-MM-DD HH:mm:ss Z" }{ "label": "2006-01-22 23:04", "value": "YYYY-MM-DD HH:mm" }{ "label": "2006-01-22", "value": "YYYY-MM-DD" }{ "label": "01-22-2006", "value": "MM-DD-YYYY" }{ "label": "01/22/2006", "value": "MM/DD/YYYY" }{ "label": "01/22/06", "value": "MM/DD/YY" }{ "label": "22-01-2006", "value": "DD-MM-YYYY" }{ "label": "22/01/2006", "value": "DD/MM/YYYY" }{ "label": "22/01/06", "value": "DD/MM/YY" }{ "label": "1137971045", "value": "Unix time (seconds)" }{ "label": "1137971045000", "value": "Unix time (milliseconds)" }
End DateendDatestring

Enter end date string, in the format defined in Input Format. Timezone is assumed the same for both dates if not explicitly set.

Action Authentication

The Formatting API does not require authentication.

About Formatting

Pre-built actions to make formatting and manipulating data within your workflows easier.

More Ways to Connect Formatting + Phantombuster

[Date/Time] Add/Subtract Time with Formatting API on New Output Created Event from Phantombuster API
Phantombuster + Formatting
 
Try it
[Text] Convert HTML to Markdown with Formatting API on New Output Created Event from Phantombuster API
Phantombuster + Formatting
 
Try it
[Text] Convert Markdown to HTML with Formatting API on New Output Created Event from Phantombuster API
Phantombuster + Formatting
 
Try it
[Data] Convert JSON to String with Formatting API on New Output Created Event from Phantombuster API
Phantombuster + Formatting
 
Try it
[Date/Time] Format with Formatting API on New Output Created Event from Phantombuster API
Phantombuster + Formatting
 
Try it
New Output Created Event from the Phantombuster API

Emit new events when new outputs are created. See the docs here

 
Try it
Launch Phantom with the Phantombuster API

Adds an agent to the launch queue, See the docs

 
Try it
[Data] Convert JSON to String with the Formatting API

Convert an object to a JSON format string

 
Try it
[Data] Parse JSON with the Formatting API

Parse a JSON string

 
Try it
[Date/Time] Add/Subtract Time with the Formatting API

Add or subtract time from a given input

 
Try it
[Date/Time] Compare Dates with the Formatting API

Get the duration between two dates in days, hours, minutes, and seconds along with checking if they are the same.

 
Try it

Explore Other Apps

1
-
24
of
2,000+
apps by most popular

HTTP / Webhook
HTTP / Webhook
Get a unique URL where you can send HTTP or webhook requests
Notion
Notion
Notion is a new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your team.
OpenAI (ChatGPT)
OpenAI (ChatGPT)
OpenAI is an AI research and deployment company with the mission to ensure that artificial general intelligence benefits all of humanity. They are the makers of popular models like ChatGPT, DALL-E, and Whisper.
Schedule
Schedule
Trigger workflows on an interval or cron schedule.
Google Drive
Google Drive
Google Drive is a file storage and synchronization service which allows you to create and share your work online, and access your documents from anywhere.
Google Sheets
Google Sheets
Use Google Sheets to create and edit online spreadsheets. Get insights together with secure sharing in real-time and from any device.
Filter
Filter
Specify a condition that your workflow must meet and whether you'd like to proceed or end workflow execution.
Python
Python
Anything you can do in Python can be done in a Pipedream Workflow. This includes using any of the 350,000+ PyPi packages available in your Python powered workflows.
Slack
Slack
Slack is a channel-based messaging platform. With Slack, people can work together more effectively, connect all their software tools and services, and find the information they need to do their best work — all within a secure, enterprise-grade environment.
Data Stores
Data Stores
Use Pipedream Data Stores to manage state throughout your workflows.
GitHub
GitHub
Where the world builds software. Millions of developers and companies build, ship, and maintain their software on GitHub—the largest and most advanced development platform in the world.
Formatting
Formatting
Pre-built actions to make formatting and manipulating data within your workflows easier.
Node
Node
Anything you can do with Node.js, you can do in a Pipedream workflow. This includes using most of npm's 400,000+ packages.
Airtable (OAuth)
Airtable (OAuth)
Airtable is a low-code platform to build next-gen apps. Move beyond rigid tools, operationalize your critical data, and reimagine workflows with AI.
Zoom
Zoom
Zoom is the leader in modern enterprise video communications, with an easy, reliable cloud platform for video and audio conferencing, chat, and webinars.
Google Calendar
Google Calendar
With Google Calendar, you can quickly schedule meetings and events and get reminders about upcoming activities, so you always know what’s next.
Gmail
Gmail
Gmail offers private and secure email by Google at no cost, for business and consumer accounts.
Gmail (Developer App)
Gmail (Developer App)
Private and secure email by Google at no cost, for business and consumer accounts. Use this app to connect your own developer account credentials.
Email
Email
Trigger workflows on new emails, and send emails to yourself as part of a Pipedream workflow.
Delay
Delay
Delay, pause, suspend, or have the execution of your workflow wait for as little as one millisecond, or as long as one year.
Go
Go
Anything you can do in Go, you can do in a Pipedream Workflow. You can use any of Go packages available with a simple import.
Premium
Zoom Admin
Zoom Admin
Video conferencing (includes account-level scopes) for Zoom Admins.
Twilio
Twilio
Twilio is a cloud communications platform for building SMS, Voice & Messaging applications on an API built for global scale.
Bash
Bash
Run any Bash in a Pipedream step within your workflow, including making curl requests.