{"id":20719893,"url":"https://github.com/itw-creative-works/social-selectors","last_synced_at":"2025-10-13T13:12:27.287Z","repository":{"id":44987248,"uuid":"204578846","full_name":"itw-creative-works/social-selectors","owner":"itw-creative-works","description":"SocialSelectors is a dynamically updated library of css selectors for social media sites.","archived":false,"fork":false,"pushed_at":"2025-10-01T02:13:10.000Z","size":104054,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-11T23:52:54.477Z","etag":null,"topics":["css","css-selector","instagram","queryselector","queryselectorall","scraper","scraping","selectors","social-media","social-selectors","twitter"],"latest_commit_sha":null,"homepage":"https://itwcreativeworks.com","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itw-creative-works.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-08-26T23:26:15.000Z","updated_at":"2025-09-02T09:11:56.000Z","dependencies_parsed_at":"2025-09-01T04:25:05.157Z","dependency_job_id":null,"html_url":"https://github.com/itw-creative-works/social-selectors","commit_stats":{"total_commits":1296,"total_committers":2,"mean_commits":648.0,"dds":"0.15123456790123457","last_synced_commit":"c92020ee96283d3df41af047bbd6ece0f2f023aa"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":"itw-creative-works/ultimate-jekyll","purl":"pkg:github/itw-creative-works/social-selectors","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itw-creative-works%2Fsocial-selectors","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itw-creative-works%2Fsocial-selectors/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itw-creative-works%2Fsocial-selectors/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itw-creative-works%2Fsocial-selectors/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itw-creative-works","download_url":"https://codeload.github.com/itw-creative-works/social-selectors/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itw-creative-works%2Fsocial-selectors/sbom","scorecard":{"id":497707,"data":{"date":"2025-08-11","repo":{"name":"github.com/itw-creative-works/social-selectors","commit":"c3682978a76be6e1a57bc8cfdd39065cd22b635e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/itw-creative-works/social-selectors/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/itw-creative-works/social-selectors/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/itw-creative-works/social-selectors/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/itw-creative-works/social-selectors/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:106: update your workflow using https://app.stepsecurity.io/secureworkflow/itw-creative-works/social-selectors/build.yml/master?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/build.yml:49","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-19T20:55:11.018Z","repository_id":44987248,"created_at":"2025-08-19T20:55:11.018Z","updated_at":"2025-08-19T20:55:11.018Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015300,"owners_count":26085683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","css-selector","instagram","queryselector","queryselectorall","scraper","scraping","selectors","social-media","social-selectors","twitter"],"created_at":"2024-11-17T03:18:43.584Z","updated_at":"2025-10-13T13:12:27.256Z","avatar_url":"https://github.com/itw-creative-works.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://itwcreativeworks.com\"\u003e\n    \u003cimg src=\"https://cdn.itwcreativeworks.com/assets/itw-creative-works/images/logo/itw-creative-works-brandmark-black-x.svg\" width=\"100px\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/package-json/v/itw-creative-works/social-selectors.svg\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://img.shields.io/david/itw-creative-works/social-selectors.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/david/dev/itw-creative-works/social-selectors.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/bundlephobia/min/social-selectors.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/codeclimate/maintainability-percentage/itw-creative-works/social-selectors.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/npm/dm/social-selectors.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/node/v/social-selectors.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/website/https/itwcreativeworks.com.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/itw-creative-works/social-selectors.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/contributors/itw-creative-works/social-selectors.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/itw-creative-works/social-selectors.svg\"\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://itwcreativeworks.com\"\u003eSite\u003c/a\u003e | \u003ca href=\"https://www.npmjs.com/package/social-selectors\"\u003eNPM Module\u003c/a\u003e | \u003ca href=\"https://github.com/itw-creative-works/social-selectors\"\u003eGitHub Repo\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n  \u003cstrong\u003esocial-selectors\u003c/strong\u003e is an API of CSS selectors for various elements on social media sites. This module puts a constantly updated library at your finger tips and takes the struggle out of dealing with third party, constantly changing CSS classes and IDs.\n  \u003cbr\u003e\n\u003c/p\u003e\n\n## 🚀 What is Social Selectors?\nSO... you're trying to get the css selector for the _follow button_ on Twitter. **Which would you rather use?**\n\n```js\n'.css-1dbjc4n.r-obd0qt.r-18u37iz.r-1w6e6rj.r-1h0z5md.r-dnmrzs *[data-testid*=\"-follow\"]'\n// OR //\n'profile.followButton.selector'\n```\n\nWell, now you don't have to manage those ugly, system generated css selectors anymore!\nIntroducing **SocialSelectors**: a dynamically updated library of css selectors for social media sites.\n\n## 🦄 Supported Sites\n* Instagram\n* Twitter\n* SoundCloud _(coming soon!)_\n* _more coming soon!_\n\n## 📦 Install Social Selectors\n### Option 1: Install via npm\n```shell\nnpm install social-selectors\n```\n\n## ⚡️ Using SocialSelectors\n```js\nconst SocialSelectors = new (require('social-selectors'));\nSocialSelectors.load({\n  library: 'instagram', // The social media site you want to load\n  location: 'hosted', // Load the local library or hosted library (local | hosted).\n})\n.then(function (library) {\n  console.log(library);\n  const followButton = SocialSelectors.get('pages.profile.elements.followButton.normal.selector'); // Get the CSS Selector for the follow button on a profile\n  console.log(followButton);\n\n  // Now you can pass the selector to your code! Here are some examples:\n  // 1. Using querySelectorAll\n  document.querySelectorAll(followButton);\n  // 2. Using Puppeteer\n  const puppeteer = require('puppeteer');\n  puppeteer.launch().then(async browser =\u003e {\n    const page = await browser.newPage();\n    await page.goto('https://www.instagram.com/google/');\n    page.$(followButton);\n  });\n\n})\n```\n\n### How do I find the paths for the selectors?\nThe easiest way to get the path for the selectors is to view the src JSON files in the repo. For example if you want to find the paths for Instagram, open [https://github.com/itw-creative-works/social-selectors/blob/master/src/libraries/instagram/main.json](/src/libraries/instagram/main.json). Each site has two main sections in the JSON file: `globals` and `pages`. And `pages` is where you'll find the selectors broken down for each page on the site.\n\nSo if you wanted the selector for the like button on an Instagram post, you would come up with `pages.post.elements.likeButton.selector`.\n\n## 📘 Why use SocialSelectors?\n* Does your app scrape social media sites or rely on their css elements in any way?\n* Are you annoyed with having to meticulously update your css selectors to successfully scrape these elements?\nThis library solves that problem by providing an api with *static* css paths that get translated into the current css selectors!\n\n## 📝 What Can SocialSelectors do?\nSocialSelectors is an API that provides an up-to-date library of CSS selectors for elements on social media sites.\n\n## 🗨️ Final Words\nIf you are still having difficulty, we would love for you to post\na question to [the SocialSelectors issues page](https://github.com/itw-creative-works/social-selectors/issues). It is much easier to answer questions that include your code and relevant files! So if you can provide them, we'd be extremely grateful (and more likely to help you find the answer!)\n\n## 📚 Projects Using this Library\n[Somiibo](https://somiibo.com/): A Social Media Bot with an open-source module library. \u003cbr\u003e\n[JekyllUp](https://jekyllup.com/): A website devoted to sharing the best Jekyll themes. \u003cbr\u003e\n[Slapform](https://slapform.com/): A backend processor for your HTML forms on static sites. \u003cbr\u003e\n[SoundGrail Music App](https://app.soundgrail.com/): A resource for producers, musicians, and DJs. \u003cbr\u003e\n[Hammock Report](https://hammockreport.com/): An API for exploring and listing backyard products. \u003cbr\u003e\n\nAsk us to have your project listed! :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitw-creative-works%2Fsocial-selectors","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitw-creative-works%2Fsocial-selectors","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitw-creative-works%2Fsocial-selectors/lists"}