Skip to content

Repository files navigation

diffbot-api-node

npmnpm bundle sizenpm licensecodecovgithub last commitBuild Status

Diffbot-API-Node is a Promise-based library to use the Diffbot REST APIs.

Features

Currently supports the following features:

Install

npm install diffbot-api-node

Usage

constDiffbot=require('diffbot-api-node')constdiffbot=newDiffbot('your-api-key-goes-here');

Analyze API

Diffbot documentation: https://www.diffbot.com/dev/docs/analyze/

letanalyze=awaitdiffbot.analyze({url: 'https://four-all-ice-creame.myshopify.com/collections/ice-cream-cubes-individual/products/ice-cream-cubes-individual',body: 'optional-html-post-body',});console.log(analyze.humanLanguage);console.log(analyze.title);console.log(analyze.type);console.log(analyze.objects);

Article API

Diffbot documentation: https://www.diffbot.com/dev/docs/article/ Note: url is optional if including plaintext POST body

letarticle=awaitdiffbot.article({url: 'https://www.theverge.com/2020/8/25/21400240/epic-apple-ruling-unreal-engine-fortnite-temporary-restraining-order',body: 'optional-html-or-plaintext-post-body',});console.log(article.objects[0].authors);console.log(article.objects[0].publisherRegion);console.log(article.objects[0].tags);

Discussion API

Diffbot documentation: https://www.diffbot.com/dev/docs/discussion/

letdiscussion=awaitdiffbot.discussion({url: 'https://www.theverge.com/2020/8/25/21400240/epic-apple-ruling-unreal-engine-fortnite-temporary-restraining-order',body: 'optional-html-post-body',});console.log(discussion.objects[0].title);console.log(discussion.objects[0].posts);console.log(discussion.objects[0].participants);console.log(discussion.objects[0].sentiment);

Event API (beta)

Diffbot documentation: https://docs.diffbot.com/docs/en/api-event

letevt=awaitdiffbot.event({url: 'https://www.eventbrite.ca/e/relit-2020-bring-your-brave-tickets-109259768910',proxy: '168.212.226.204',body: 'optional-html-post-body',});console.log(evt.objects[0].venue);console.log(evt.objects[0].description);

Image API

Diffbot documentation: https://www.diffbot.com/dev/docs/image/

letimage=awaitdiffbot.image({url: 'https://www.deviantart.com/up-tchi/art/Coral-village-852927725',body: 'optional-html-post-body',});console.log(image.objects[0].title);console.log(image.objects[0].url);console.log(image.objects[0].naturalHeight);

Product API

Diffbot documentation: https://www.diffbot.com/dev/docs/product/

letproduct=awaitdiffbot.product({url: 'https://www.amazon.com/Resistance-Avalon-Social-Deduction-Game/dp/B009SAAV0C',body: 'optional-html-post-body',});console.log(product.objects);

Video API

Diffbot documentation: https://www.diffbot.com/dev/docs/video/

letvideo=awaitdiffbot.video({url: 'https://www.youtube.com/watch?v=HeiPdaTQTfo',body: 'optional-html-post-body',});console.log(video.objects[0].title);console.log(video.objects[0].html);

Knowledge Graph API

Diffbot documentation: https://docs.diffbot.com/kgapi

letkg=awaitdiffbot.knowledgeGraph({query: 'type:LocalBusiness location.{country.name:"Canada" city.name:"Ottawa" isCurrent:true}'});console.log(kg.hits);console.log(kg.data);

Crawl API

Diffbot documentation: https://www.diffbot.com/dev/docs/crawl/api.jsp

// Crawl (new)letcrawl=awaitdiffbot.crawl().new({name: 'my-diffbot-crawl',seeds: ['https://www.cruisebar.com.au/','https://www.sydneyharbourdinnercruises.com.au/',],});console.log(crawl.response);console.log(crawl.jobs);// Crawl (get)letcrawlData=awaitdiffbot.crawl().get({name: 'my-diffbot-crawl',});console.log(crawlData);// Crawl (details)letcrawlDetails=awaitdiffbot.crawl().details({name: 'my-diffbot-crawl',});console.log(crawlDetails.jobs);// Crawl (pause)letcrawlPause=awaitdiffbot.crawl().pause({name: 'my-diffbot-crawl',});console.log(crawlPause);// Crawl (resume)letcrawlResume=awaitdiffbot.crawl().resume({name: 'my-diffbot-crawl',});console.log(crawlResume);// Crawl (restart)letcrawlRestart=awaitdiffbot.crawl().restart({name: 'my-diffbot-crawl',});console.log(crawlRestart);// Crawl (delete)letcrawlDeletion=awaitdiffbot.crawl().delete({name: 'my-diffbot-crawl',});console.log(crawlDeletion);

Search API

Diffbot documentation: https://www.diffbot.com/dev/docs/search/

letsearch=awaitdiffbot.search({name: 'my-diffbot-crawl',query: 'type:product',});console.log(article.objects[0].title);console.log(article.objects[0].pageUrl);

Account API

Diffbot documentation: https://docs.diffbot.com/docs/en/api-account

letaccount=awaitdiffbot.account({days: 60,invoices: true,});console.log(account.plan);console.log(account.usage);

Testing

The test suite verifies that the requests generated are accurate, as per the docs, without actually making any API calls. The only requests executed are sample calls made to example.com and JSONPlaceholder.

By not executing the actual Diffbot API calls, it preserves any API call limits, allows the test suite to run much faster, and ensures that development is possible without needing to have a valid Diffbot API key.

To run the test suite, just run npm test.

About

Diffbot-API-Node is a Promise-based library to use the Diffbot REST APIs

Topics

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages