<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vikash Rathee</title>
    <description>The latest articles on DEV Community by Vikash Rathee (@vikashrathee).</description>
    <link>https://dev.to/vikashrathee</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F151975%2F7c132fad-2ae2-4008-a364-f1144f580b0d.jpg</url>
      <title>DEV Community: Vikash Rathee</title>
      <link>https://dev.to/vikashrathee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vikashrathee"/>
    <language>en</language>
    <item>
      <title>How to scrape a website using Chrome extension?</title>
      <dc:creator>Vikash Rathee</dc:creator>
      <pubDate>Thu, 15 Oct 2026 09:44:46 +0000</pubDate>
      <link>https://dev.to/vikashrathee/how-to-scrape-a-website-with-a-chrome-extension-280h</link>
      <guid>https://dev.to/vikashrathee/how-to-scrape-a-website-with-a-chrome-extension-280h</guid>
      <description>&lt;p&gt;Most scraping jobs I see start the same way. Someone needs to scrape data from product list, a directory of companies, or a page of search results in a spreadsheet, and writing a Python script with selectors and pagination logic feels like too much for a one-off task.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/WWzcA5p-oqs" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;For that kind of job, a point-and-click extension is faster. In this post I'll show how to scrape a list page with the Agenty's &lt;a href="https://chromewebstore.google.com/detail/gpolcofcjjiooogejfbaamdgmgfehgff" rel="noopener noreferrer"&gt;Scraping Extension&lt;/a&gt; and export the result to CSV, Excel, or JSON.&lt;/p&gt;

&lt;p&gt;I'll use &lt;a href="https://scrapingsandbox.com" rel="noopener noreferrer"&gt;Scraping Sandbox&lt;/a&gt;, a free practice site with 500+ sample e-commerce products. It's explicitly open for scraping practice, so you can follow along without worrying about anyone's terms of service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install the extension
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://agenty.com/extension" rel="noopener noreferrer"&gt;Install Agenty&lt;/a&gt; from the Chrome Web Store and pin it to your toolbar. Installing it and running scrapers in your browser is free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick a Scraping mode
&lt;/h2&gt;

&lt;p&gt;Open the page you want to scrape, then click the Agenty icon to open the side panel. You'll see four modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List: for repeating items like product grids, search results, and directories&lt;/li&gt;
&lt;li&gt;Page details: for fields on a single page, which you can then reuse across many URLs&lt;/li&gt;
&lt;li&gt;Images: collects images on the page so you can preview and download them as a ZIP&lt;/li&gt;
&lt;li&gt;Emails: finds email addresses in page text, &lt;code&gt;mailto:&lt;/code&gt; links, and attributes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbo94yn348kv2dqiw8o4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbo94yn348kv2dqiw8o4t.png" alt="Agenty sidebar to scrape data" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are also ready-made templates for 50+ popular sites. If your target is one of them, start there and skip the selector work.&lt;/p&gt;

&lt;p&gt;The Scraping Sandbox home page shows a grid of 24 product cards per page, so choose List.&lt;/p&gt;

&lt;h2&gt;
  
  
  Click the data you want
&lt;/h2&gt;

&lt;p&gt;Click the name of the first product. Agenty highlights the other product names that match and generates the selector for you. You don't need to open DevTools or write anything by hand.&lt;/p&gt;

&lt;p&gt;Repeat for the other fields you need. Each card has a vendor, rating, price, original price (on discounted items), category, SKU, stock status, and a link to the product page. Then clean up the field list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rename fields to something you'll recognize in the spreadsheet (&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;price&lt;/code&gt;, &lt;code&gt;sku&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Remove anything it picked up that you don't need&lt;/li&gt;
&lt;li&gt;Add a custom CSS selector when the auto-generated one grabs too much or too little&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Discounted products are a good example. They show two prices, the current one and the crossed-out original. If you only want the current price, use &lt;code&gt;.product-card .price&lt;/code&gt; as a custom selector. The original price has its own class, &lt;code&gt;.compare-at-price&lt;/code&gt;, so you can add it as a separate field if you want both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handle pagination
&lt;/h2&gt;

&lt;p&gt;A single page is rarely enough. Agenty supports a few ways to move through pages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current page only&lt;/li&gt;
&lt;li&gt;Auto-scroll, for infinite-scroll pages that load more items as you scroll&lt;/li&gt;
&lt;li&gt;A "Next" button or link&lt;/li&gt;
&lt;li&gt;A URL pattern, such as a numbered range of page URLs&lt;/li&gt;
&lt;li&gt;A list of URLs you paste in&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://agenty.com/products/scraping-agent" rel="noopener noreferrer"&gt;Scraping&lt;/a&gt; Sandbox splits the products across 21 pages with numbered buttons and a next arrow at the bottom. The URL doesn't change when you switch pages, so a URL pattern won't work here. Use the "Next" button option and point it at the next arrow.&lt;/p&gt;

&lt;p&gt;On sites where pages do have predictable URLs (like &lt;code&gt;?page=2&lt;/code&gt;), a URL pattern is usually more reliable than clicking a button. If you want to try auto-scroll, the sandbox has a separate &lt;a href="https://scrapingsandbox.com/infinite-scroll" rel="noopener noreferrer"&gt;infinite scroll&lt;/a&gt; page for that.&lt;/p&gt;

&lt;p&gt;You can also adjust speed, delays, timeouts, page limits, and scroll behavior. Keep the delays reasonable. Hammering a site with fast requests is the quickest way to get blocked, and it's not fair to the site owner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it and export
&lt;/h2&gt;

&lt;p&gt;Run the scraper. It works inside your browser, so you can watch it move through pages. When it finishes, review the results table and check a few rows against the site.&lt;/p&gt;

&lt;p&gt;Export to XLSX, CSV, or JSON.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxz2xv4uw3pqpakdohk7a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxz2xv4uw3pqpakdohk7a.png" alt="export result" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Save the scraper if you'll need the data again. Saved scrapers rerun with one click, and the run history lets you reopen past results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scraping detail pages
&lt;/h2&gt;

&lt;p&gt;The List mode gets you the overview. If you need fields that only appear on each item's own page, like the description, review count, or tags, use Page details:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open one product page, for example &lt;a href="https://scrapingsandbox.com/product/1" rel="noopener noreferrer"&gt;/product/1&lt;/a&gt;, and choose Page details.&lt;/li&gt;
&lt;li&gt;Click the fields you want, the same way as before.&lt;/li&gt;
&lt;li&gt;Point the scraper at the product URLs. You can paste the &lt;code&gt;url&lt;/code&gt; column from your list run as a URL list, or use a URL pattern, since product pages follow &lt;code&gt;/product/1&lt;/code&gt;, &lt;code&gt;/product/2&lt;/code&gt;, and so on.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The fields you picked once are applied to every page.&lt;/p&gt;

&lt;p&gt;Each product page on the sandbox also shows a "Scraped JSON Data" block with the expected values for that product. Compare a few of your rows against it to check that your selectors picked up the right data.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>chrome</category>
      <category>nocode</category>
      <category>data</category>
    </item>
    <item>
      <title>I built an URL shortener with Cloudflare KV</title>
      <dc:creator>Vikash Rathee</dc:creator>
      <pubDate>Sat, 09 Dec 2023 10:49:55 +0000</pubDate>
      <link>https://dev.to/vikashrathee/i-built-an-url-shortener-with-cloudflare-kv-5b7i</link>
      <guid>https://dev.to/vikashrathee/i-built-an-url-shortener-with-cloudflare-kv-5b7i</guid>
      <description>&lt;p&gt;I am building an open source, highly scalable, and low-cost &lt;a href="https://github.com/dayschedule/idm" rel="noopener noreferrer"&gt;URL shortener with Cloudflare KV&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh311hzymq49wsdho18bt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh311hzymq49wsdho18bt.png" alt="URL shortening software" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By low-cost I mean, just $5 per month on Cloudflare worker and a free plan for basic requirement -&lt;/p&gt;

&lt;h2&gt;
  
  
  Idea
&lt;/h2&gt;

&lt;p&gt;At &lt;a href="https://dayschedule.com/" rel="noopener noreferrer"&gt;DaySchedule&lt;/a&gt;, we had many customer upvoted for a URL shortener feature with auto-expirable links to book an appointment instead sharing their original URL.&lt;/p&gt;

&lt;p&gt;So, I decided to try Cloudflare for this project - &lt;/p&gt;

&lt;p&gt;By leveraging Cloudflare KV's capabilities, the goal was to develop a solution that offered not only &lt;a href="https://idm.in/" rel="noopener noreferrer"&gt;URL shortening&lt;/a&gt; but also customization options, analytics, and scalability, all while maintaining a significantly lower cost compared to our established services on AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.cloudflare.com/kv/api/write-key-value-pairs/#expiring-keys" rel="noopener noreferrer"&gt;Expirable links&lt;/a&gt; using &lt;code&gt;cacheTtl&lt;/code&gt; option on KV&lt;/li&gt;
&lt;li&gt;Custom domain using Cloudflare for SaaS&lt;/li&gt;
&lt;li&gt;Analytics using &lt;a href="https://developers.cloudflare.com/analytics/analytics-engine/worker-querying/#querying" rel="noopener noreferrer"&gt;Worker analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  API
&lt;/h2&gt;

&lt;p&gt;I used &lt;a href="https://hono.dev/" rel="noopener noreferrer"&gt;hono.dev&lt;/a&gt; by &lt;a class="mentioned-user" href="https://dev.to/yusukebe"&gt;@yusukebe&lt;/a&gt; for API routing, and it's blazing fast and offers Cloudflare pages template to build Edge projects quickly.&lt;/p&gt;

&lt;p&gt;Here is an example of &lt;code&gt;server.ts&lt;/code&gt; from their docs -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Hono } from 'hono'
const app = new Hono()

app.get('/', (c) =&amp;gt; c.text('Hono!'))

export default app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Controller
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://github.com/dayschedule/idm/blob/main/functions/routes/links.ts" rel="noopener noreferrer"&gt;&lt;code&gt;/links&lt;/code&gt; API&lt;/a&gt; is all I need to create, update and manage the short links.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const links = new Hono&amp;lt;{ Bindings: Bindings }&amp;gt;();

links.post(
  '/',
  validator('json', (value, c) =&amp;gt; {
    const parsed = linkSchema.safeParse(value);
    if (!parsed.success) {
      return c.json(parsed, 400);
    }
    return parsed.data as ShortLink;
  }),
  async (ctx) =&amp;gt; {
    const data = ctx.req.valid('json');
    // Set expire_at if given, or fallback to 1 month expiry
    const expireAt = data.expire_at
      ? dayjs(data.expire_at).unix()
      : dayjs().add(1, 'month').unix();
    if (expireAt &amp;lt;= dayjs().unix()) {
      return ctx.json(
        { message: 'The expire_at must be greater then current date time' },
        400
      );
    }

    let key = data.key || nanoid(7);
    let exists = await ctx.env.SHORTLINKS.get(key);
    while (exists) {
      key = nanoid(7);
      exists = await ctx.env.SHORTLINKS.get(key);
    }
    await ctx.env.SHORTLINKS.put(key, JSON.stringify(data), {
      expiration: expireAt,
    });
    return ctx.json(
      { ...data, key: key, short_url: `https://idm.in/${key}` },
      200
    );
  }
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Code explanations -
&lt;/h3&gt;

&lt;p&gt;This code is &lt;code&gt;POST&lt;/code&gt; request to create short links. Here's a breakdown of the code to explain what all I am doing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;const links = new Hono&amp;lt;{ Bindings: Bindings }&amp;gt;():&lt;/code&gt; It creates an instance of the Hono object.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Validation with zod - The &lt;code&gt;validator('json', (value, c) =&amp;gt; {...}):&lt;/code&gt; function is used as a middleware for validating the incoming JSON payload defined in &lt;code&gt;linkSchema&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set expiration: Checks if an expiry date is provided in the payload. If not, it sets an expiry date one month from the current date and time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generates a unique key for the link using &lt;code&gt;nanoid(7)&lt;/code&gt; or uses the provided key from the payload if available.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stores the link data (converted to a JSON string) in the Cloudflare KV (&lt;code&gt;SHORTLINKS&lt;/code&gt;) with an expiration time based on the calculated expiry date.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;The demo is available on &lt;a href="https://idm.in/" rel="noopener noreferrer"&gt;IDM&lt;/a&gt;, it's free to use and open-sourced on Github to &lt;strong&gt;build your own custom URL shortener&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkhcz4xrgxyzr19ua8auq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkhcz4xrgxyzr19ua8auq.gif" alt="Short your links" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can clone the repo to deploy on your Cloudflare account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/dayschedule/idm" rel="noopener noreferrer"&gt;Star the repository&lt;/a&gt; on Github to show your support :-)&lt;/p&gt;

</description>
      <category>urlshortener</category>
      <category>bitly</category>
      <category>shortlink</category>
      <category>cloudflare</category>
    </item>
    <item>
      <title>How to embed appointment scheduling widget on your website?</title>
      <dc:creator>Vikash Rathee</dc:creator>
      <pubDate>Mon, 03 Apr 2023 12:02:57 +0000</pubDate>
      <link>https://dev.to/vikashrathee/how-to-embed-appointment-scheduling-widget-on-your-website-2lhj</link>
      <guid>https://dev.to/vikashrathee/how-to-embed-appointment-scheduling-widget-on-your-website-2lhj</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F715jjlvttedzj8ezwamn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F715jjlvttedzj8ezwamn.png" alt="Appointment scheduler" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Embedding a Dayschedule &lt;a href="https://www.npmjs.com/package/dayschedule-widget" rel="noopener noreferrer"&gt;appointment scheduling widget&lt;/a&gt; on your website is a great way to simplify the appointment scheduling process for your clients. Here are the steps to follow:&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose a appointment scheduling widget
&lt;/h2&gt;

&lt;p&gt;There are many scheduling widgets available online, such as  &lt;a href="https://calendly.com/" rel="noopener noreferrer"&gt;Calendly&lt;/a&gt;, &lt;a href="https://doodle.com/en/" rel="noopener noreferrer"&gt;Doodle&lt;/a&gt;, &lt;a href="https://acuityscheduling.com/" rel="noopener noreferrer"&gt;Acuity Scheduling&lt;/a&gt; and &lt;a href="https://dayschedule.com/" rel="noopener noreferrer"&gt;DaySchedule&lt;/a&gt;. Research different options and choose one that meets your business needs.&lt;/p&gt;

&lt;p&gt;In this post, I am going to show you how to embed the &lt;a href="https://github.com/dayschedule/dayschedule-widget" rel="noopener noreferrer"&gt;dayschedule widget&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sign up for an account
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Login to &lt;a href="https://app.dayschedule.com/signup" rel="noopener noreferrer"&gt;Dayschedule&lt;/a&gt; (or create a new account, it's free for basic use), &lt;/li&gt;
&lt;li&gt;Create a resource &lt;/li&gt;
&lt;li&gt;Set availability, questions etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/z7_IwonRrp0" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Customize your scheduling widget
&lt;/h2&gt;

&lt;p&gt;Customize your scheduling widget to fit the design and branding of your website. You can set color, upload logo etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyy96v52sjwad0rp2oakb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyy96v52sjwad0rp2oakb.png" alt="Customize your scheduling widget" width="799" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Generate an embed code
&lt;/h2&gt;

&lt;p&gt;Once your scheduling widget is customized, &lt;a href="https://dayschedule.com/widget" rel="noopener noreferrer"&gt;generate an embed code&lt;/a&gt;. This code is what you will use to add the widget to your website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyl1fknuw369qo6p9glj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyl1fknuw369qo6p9glj.png" alt="Generate an embed code" width="787" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Add the embed code to your website
&lt;/h2&gt;

&lt;p&gt;Install the package from NPM&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i dayschedule-widget
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the code to open appointment booking popup on click.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;button type="button" 
    onClick="bookAppointment()"&amp;gt;
    Book an appointment
&amp;lt;/button&amp;gt;

function bookAppointment(){
  daySchedule.initPopupWidget({
    "url": "https://demo.dayschedule.com",
    "type": "popup",
    "color": {
            "primary": "#0f0980",
        "secondary": "#afeefe"
    }
  })
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See examples - &lt;a href="https://stackblitz.com/@vickyRathee/collections/dayschedule-appointment-bookings" rel="noopener noreferrer"&gt;https://stackblitz.com/@vickyRathee/collections/dayschedule-appointment-bookings&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And paste the embed code into the HTML of your website where you want the scheduling widget to appear. This could be on a contact page, a services page, or a dedicated scheduling page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test your scheduling widget
&lt;/h2&gt;

&lt;p&gt;Once you have added the scheduling widget to your website, test it out to make sure it is functioning properly. Schedule a test appointment to make sure the process works as expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Promote your scheduling widget
&lt;/h2&gt;

&lt;p&gt;Now that your scheduling widget is embedded on your website, promote it to your clients and customers. Include a link to the scheduling widget in email signatures, social media posts, and other marketing materials.&lt;/p&gt;

</description>
      <category>scheduling</category>
      <category>widget</category>
      <category>calendly</category>
      <category>appointment</category>
    </item>
    <item>
      <title>Introducing Agenty "Agents for Machine Intelligence"</title>
      <dc:creator>Vikash Rathee</dc:creator>
      <pubDate>Tue, 02 Apr 2019 15:33:06 +0000</pubDate>
      <link>https://dev.to/vikashrathee/introducing-agenty-agents-for-machine-intelligence-2hfg</link>
      <guid>https://dev.to/vikashrathee/introducing-agenty-agents-for-machine-intelligence-2hfg</guid>
      <description>

&lt;p&gt;Hi, Dev Community!&lt;/p&gt;

&lt;p&gt;We have been working on &lt;a href="https://www.agenty.com/"&gt;Agenty&lt;/a&gt; from a long time, and today I am so excited to show it to the Dev community.&lt;/p&gt;

&lt;p&gt;We are launching 4 agents today :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scraping agents&lt;/strong&gt; : Point-and-Click web scraping agent to extract data from websites of choices. Convert websites into api in lass then 2 minutes (see my video &lt;a href="https://www.agenty.com/docs/video-tutorials.aspx"&gt;https://www.agenty.com/docs/video-tutorials.aspx&lt;/a&gt; ) or install the extension from Chrome store - &lt;a href="https://chrome.google.com/webstore/detail/agenty-advanced-web-scrap/gpolcofcjjiooogejfbaamdgmgfehgff"&gt;https://chrome.google.com/webstore/detail/agenty-advanced-web-scrap/gpolcofcjjiooogejfbaamdgmgfehgff&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Textract agents&lt;/strong&gt; : Extract text and metadata from almost any documents in batch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OCR agents&lt;/strong&gt; : Extract text from images and pdfs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bar code recognition agent&lt;/strong&gt; - Recognize the bar code number and it's type from products photo captured by mobile or cameras.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All agents are API ready, see the documentation - &lt;a href="https://www.agenty.com/docs/api"&gt;https://www.agenty.com/docs/api&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to our website and signup to get 100 pages credit free to try any agent you like. And you can go PRO anytime if you like it, the &lt;a href="https://www.agenty.com/pricing/"&gt;pricing plans&lt;/a&gt; just starts from $29 per month (10x lower then import.io for web scraping whose plans starts from $299)&lt;/p&gt;

&lt;p&gt;I’ll keeps checking this page today to answer any comments, feedback you have, really looking forward to it :)&lt;/p&gt;


</description>
      <category>webscraping</category>
      <category>machineintelligence</category>
      <category>ocr</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
