{"id":15289203,"url":"https://github.com/phacks/gatsby-source-meetup","last_synced_at":"2025-04-13T09:06:30.039Z","repository":{"id":33659565,"uuid":"156964786","full_name":"phacks/gatsby-source-meetup","owner":"phacks","description":"Source plugin for pulling Meetup.com Group and Events data into Gatsby.","archived":false,"fork":false,"pushed_at":"2023-01-04T21:39:12.000Z","size":1049,"stargazers_count":11,"open_issues_count":17,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T09:06:09.826Z","etag":null,"topics":["gatsby-plugin","gatsbyjs","meetup"],"latest_commit_sha":null,"homepage":"https://www.gatsbyjs.org/packages/gatsby-source-meetup/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phacks.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-10T09:05:50.000Z","updated_at":"2022-05-24T22:07:09.000Z","dependencies_parsed_at":"2023-01-15T01:52:47.601Z","dependency_job_id":null,"html_url":"https://github.com/phacks/gatsby-source-meetup","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phacks%2Fgatsby-source-meetup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phacks%2Fgatsby-source-meetup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phacks%2Fgatsby-source-meetup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phacks%2Fgatsby-source-meetup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phacks","download_url":"https://codeload.github.com/phacks/gatsby-source-meetup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248688571,"owners_count":21145766,"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","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":["gatsby-plugin","gatsbyjs","meetup"],"created_at":"2024-09-30T15:59:48.886Z","updated_at":"2025-04-13T09:06:29.998Z","avatar_url":"https://github.com/phacks.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gatsby-source-meetup\n\nSource plugin for pulling [Meetup.com](https://www.meetup.com/) data about a specific Group and the events associated to it.\n\n## Install\n\n`npm install --save gatsby-source-meetup`\n\n## How to use\n\nFirst, you need a way to pass environment variables to the build process, so secrets and other secured data aren't committed to source control. We recommend using [`dotenv`](https://github.com/motdotla/dotenv) which will then expose environment variables. [Read more about dotenv and using environment variables here](envvars). Then we can _use_ these environment variables and configure our plugin.\n\n```javascript\n// In your gatsby-config.js\nmodule.exports = {\n  plugins: [\n    {\n      resolve: `gatsby-source-meetup`,\n      options: {\n        // Learn about environment variables: https://gatsby.app/env-vars\n        // Your Meetup.com API key can be retrieved here: https://secure.meetup.com/fr-FR/meetup_api/key/\n        apiKey: process.env.MEETUP_API_KEY,\n        // Mandatory: the URL name of a Meetup Group.\n        // See the URL of the group page, e.g. https://www.meetup.com/fr-FR/jamstack-paris\n        groupUrlName: \"jamstack-paris\",\n        // Optional parameters for retrieving Events, see full documentation at\n        // https://www.meetup.com/meetup_api/docs/:urlname/events/?uri=%2Fmeetup_api%2Fdocs%2F%3Aurlname%2Fevents%2F#list\n        status: \"upcoming,past\",\n        desc: \"true\",\n        page: 10\n      },\n    },\n  ],\n}\n```\n\n### Querying multiple groups\n\nTo get data from multiple Groups, you can define the plugin multiple times:\n\n```javascript\n// In your gatsby-config.js\nmodule.exports = {\n  plugins: [\n    {\n      resolve: `gatsby-source-meetup`,\n      options: {\n        apiKey: process.env.MEETUP_API_KEY,\n        groupUrlName: \"jamstack-paris\",\n        status: \"past\",\n        desc: \"true\",\n        page: 10\n      },\n    },\n    {\n      resolve: `gatsby-source-meetup`,\n      options: {\n        apiKey: process.env.MEETUP_API_KEY,\n        groupUrlName: \"paris-js\",\n        status: \"upcoming,past\",\n        desc: \"true\",\n        page: 10\n      },\n    },\n  ],\n}\n```\n\n### Querying events with multiple options\n\nTo get data from the same Group with multiple options (sorting, number of events…) depending on their status, you can use the optional parameter `eventsOptions`:\n\n```javascript\n// In your gatsby-config.js\nmodule.exports = {\n  plugins: [\n    {\n      resolve: `gatsby-source-meetup`,\n      options: {\n        apiKey: process.env.MEETUP_API_KEY,\n        groupUrlName: \"jamstack-paris\",\n        status: \"past\",\n        desc: \"true\",\n        page: 10,\n        eventsOptions: [\n          {\n            status: `upcoming`,\n            desc: `true`,\n            page: 1,\n          },\n          {\n            status: `past`,\n            desc: `true`,\n            page: 5,\n          }\n        ],\n      },\n    },\n  ],\n}\n```\n\nWith eventsOptions used above, you get the first next event from today and the last 5 events.\n\n## How to query\n\nYou can query the Group node and associated Event nodes created from Meetup like the following:\n\n```graphql\n{\n  meetupGroup {\n    events {\n      name\n      created\n      duration\n      rsvp_limit\n      status\n      time\n      local_date\n      local_time\n      rsvp_open_offset\n      rsvp_close_offset\n      updated\n      utc_offset\n      waitlist_count\n      yes_rsvp_count\n      venue {\n        name\n        lat\n        lon\n        repinned\n        address_1\n        city\n        country\n        localized_country_name\n        zip\n        state\n        phone\n        id\n        address_2\n        address_3\n      }\n      link\n      description\n      visibility\n      manual_attendance_count\n      meetupId\n      member_pay_fee\n      past_event_count_inclusive\n      plain_text_description\n      plain_text_no_images_description\n      rsvpable\n      rsvpable_after_join\n      saved\n      short_link\n      simple_html_description\n      venue_visibility\n      web_actions\n      why\n      id\n      how_to_find_us\n      featured\n      description_images\n      date_in_series_pattern\n      comment_count\n      attendance_count\n      attendance_sample {\n        bio\n        event_context\n        id\n        name\n        photo\n        role\n        self\n        title\n      }\n      attendee_sample {\n        created\n        id\n        member {\n          bio\n          event_context\n          title\n          self\n          role\n          photo\n          name\n          id\n        }\n        updated\n      }\n      event_hosts {\n        host_count\n        id\n        intro\n        join_date\n        name\n        photo {\n          base_url\n          highres_link\n          type\n          thumb_link\n          photo_link\n          id\n        }\n      }\n      featured_photo {\n        base_url\n        id\n        highres_link\n        photo_link\n        thumb_link\n        type\n      }\n      fee {\n        accepts\n        amount\n        currency\n        description\n        label\n        required\n      }\n      fee_options {\n        currencies {\n          default\n          code\n        }\n        is_setup\n        setup_link\n        type\n      }\n      group {\n        country\n        created\n        id\n        join_mode\n        lat\n        localized_location\n        lon\n        name\n        region\n        shortname\n        sort_name\n        state\n        timezone\n        urlname\n        who\n      }\n      internal {\n        content\n        contentDigest\n        description\n        fieldOwners\n        ignoreType\n        mediaType\n        owner\n        type\n      }\n      photo_album {\n        id\n        photo_count\n        title\n        photo_sample {\n          base_url\n          highres_link\n          id\n          photo_link\n          thumb_link\n          type\n        }\n        event {\n          id\n          name\n          no_rsvp_count\n          time\n          utc_offset\n          waitlist_count\n          yes_rsvp_count\n        }\n      }\n      rsvp_rules {\n        close_time\n        closed\n        guest_limit\n        open_time\n        refund_policy {\n          days\n          notes\n          policies\n        }\n        waitlisting\n      }\n      rsvp_sample {\n        created\n        id\n        member {\n          bio\n          event_context\n          id\n          title\n          role\n          self\n          photo\n          name\n        }\n        updated\n      }\n      self {\n        actions\n        role\n        rsvp {\n          answers\n          guests\n          response\n        }\n        pay_status\n      }\n      series {\n        weekly {\n          interval\n          day_of_week\n        }\n        template_event_id\n        start_date\n        monthly {\n          week_of_month\n          interval\n          day_of_week\n        }\n        id\n        end_date\n        description\n      }\n      survey_questions {\n        question\n        id\n      }\n    }\n    name\n    status\n    link\n    urlname\n    description\n    created\n    city\n    untranslated_city\n    country\n    localized_country_name\n    localized_location\n    state\n    join_mode\n    visibility\n    lat\n    lon\n    members\n    organizer {\n      name\n      bio\n      photo {\n        highres_link\n        photo_link\n        thumb_link\n      }\n    }\n    who\n    group_photo {\n      highres_link\n      photo_link\n      thumb_link\n    }\n    key_photo {\n      highres_link\n      photo_link\n      thumb_link\n    }\n    timezone\n    next_event {\n      name\n      yes_rsvp_count\n      time\n      utc_offset\n    }\n    category {\n      name\n      shortname\n    }\n    meta_category {\n      name\n      shortname\n    }\n  }\n}\n```\n\nFull API documentation can be found [here](https://www.meetup.com/fr-FR/meetup_api/docs/:urlname/?uri=%2Fmeetup_api%2Fdocs%2F%3Aurlname%2F#get) for Groups, and [here](https://www.meetup.com/fr-FR/meetup_api/docs/:urlname/events/?uri=%2Fmeetup_api%2Fdocs%2F%3Aurlname%2Fevents%2F#list) for Events.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphacks%2Fgatsby-source-meetup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphacks%2Fgatsby-source-meetup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphacks%2Fgatsby-source-meetup/lists"}