Skip to content

Latest commit

 

History

History
64 lines (48 loc) · 1.81 KB

File metadata and controls

64 lines (48 loc) · 1.81 KB

Dev.to Articles Scraper — JavaScript (apify-client) examples

Call the hosted Actor logiover/devto-articles-scraper from Node.js with the official apify-client.

Install

npm install apify-client

Scrape a tag and read results

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('logiover/devto-articles-scraper').call({
  tag: 'ai',
  maxArticles: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const a of items) {
  console.log(`${a.reactionsCount}${a.title} — @${a.authorUsername}`);
}

Rank this week's top posts for a tag

const run = await client.actor('logiover/devto-articles-scraper').call({
  sort: 'top_week',
  tag: 'javascript',
  maxArticles: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.sort((a, b) => (b.reactionsCount ?? 0) - (a.reactionsCount ?? 0));
console.table(items.slice(0, 10).map((a) => ({ title: a.title, reactions: a.reactionsCount })));

Every article from one author, grouped by tag

const run = await client.actor('logiover/devto-articles-scraper').call({
  username: 'ben',
  maxArticles: 0,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

const tagCounts = {};
for (const a of items) for (const t of a.tags || []) tagCounts[t] = (tagCounts[t] || 0) + 1;
console.table(tagCounts);

Export to CSV buffer

import { writeFileSync } from 'node:fs';
const csv = await client.dataset(run.defaultDatasetId).downloadItems('csv');
writeFileSync('devto.csv', csv);

See also: cli.md · api-curl.md · python.md