diff --git a/GENERATION_REPORT.md b/GENERATION_REPORT.md index 231c296..6405adc 100644 --- a/GENERATION_REPORT.md +++ b/GENERATION_REPORT.md @@ -1,15 +1,10 @@ # Generation Report -Generated at: 2026-08-31T07:13:05Z +Generated at: 2026-09-08T07:06:25Z -## APIs generated (55) +## APIs generated (60) - airbnb-listing - airbnb-property -- amazon-product -- amazon-reviews -- amazon-search -- amazon-seller -- amazon-seller-products - bing-serp - booking-place - booking-search @@ -19,6 +14,16 @@ Generated at: 2026-08-31T07:13:05Z - yelp-reviews - yelp-search - duckduckgo +- amazon-product +- amazon-reviews +- amazon-search +- amazon-seller +- amazon-seller-products +- shopify-collections +- shopify-products +- walmart-product +- walmart-reviews +- walmart-search - google-images - google-maps - google-maps-contributor-reviews @@ -34,6 +39,8 @@ Generated at: 2026-08-31T07:13:05Z - google-serp-light - google-shopping - google-short-videos +- google-scholar +- google-scholar-cite - google-flights - google-hotels - google-trends @@ -43,8 +50,8 @@ Generated at: 2026-08-31T07:13:05Z - indeed-listing - redfin-listing - redfin-property -- shopify-collections -- shopify-products +- zillow-listing +- zillow-property - instagram-posts - instagram-profile - tiktok-comments @@ -56,8 +63,6 @@ Generated at: 2026-08-31T07:13:05Z - youtube-search-api - youtube-transcript-api - youtube-video-api -- zillow-listing -- zillow-property ## Deprecated APIs (hidden in help) - amazon-reviews diff --git a/cmd/gen_airbnb_listing.go b/cmd/gen_airbnb_listing.go index da4b0d0..bcd64d0 100644 --- a/cmd/gen_airbnb_listing.go +++ b/cmd/gen_airbnb_listing.go @@ -89,12 +89,12 @@ func newAirbnbListingCmd() *cobra.Command { }, } cmd.Flags().IntVar(&p_adultsVar, "adults", 0, "adults Number of Adults: Number of adults.\n") - cmd.Flags().StringVar(&p_checkInVar, "check-in", "2026-01-01", "checkIn Check-in Date: The check-in date for the listings. (required)") + cmd.Flags().StringVar(&p_checkInVar, "check-in", "2026-09-20", "checkIn Check-in Date: The check-in date for the listings. (required)") _ = cmd.MarkFlagRequired("check-in") - cmd.Flags().StringVar(&p_checkOutVar, "check-out", "2026-01-05", "checkOut Check-out Date: The check-out date for the listings.") + cmd.Flags().StringVar(&p_checkOutVar, "check-out", "2026-09-24", "checkOut Check-out Date: The check-out date for the listings.") cmd.Flags().IntVar(&p_childrenVar, "children", 0, "children Number of Children: Number of children.\n") cmd.Flags().IntVar(&p_infantsVar, "infants", 0, "infants Number of Infants: Number of infants.\n") - cmd.Flags().StringVar(&p_locationVar, "location", "", "location Location: The location to search for listings. Required unless a full map bounding box (neLat, neLng, swLat, swLng) is provided.") + cmd.Flags().StringVar(&p_locationVar, "location", "New York", "location Location: The location to search for listings. Required unless a full map bounding box (neLat, neLng, swLat, swLng) is provided.") cmd.Flags().Float64Var(&p_neLatVar, "ne-lat", 40.8, "neLat North-East Latitude: North-east corner latitude of the map bounding box. When all four bounding-box coordinates are provided, listings are searched within the box instead of by location.\n") cmd.Flags().Float64Var(&p_neLngVar, "ne-lng", -73.9, "neLng North-East Longitude: North-east corner longitude of the map bounding box.\n") cmd.Flags().StringVar(&p_nextPageTokenVar, "next-page-token", "", "nextPageToken Next Page Token: The token used to retrieve the next page of results.") diff --git a/cmd/gen_amazon_product.go b/cmd/gen_amazon_product.go index 0d6ef85..13f32b1 100644 --- a/cmd/gen_amazon_product.go +++ b/cmd/gen_amazon_product.go @@ -89,7 +89,7 @@ func newAmazonProductCmd() *cobra.Command { return []string{"www.amazon.com", "www.amazon.de", "www.amazon.co.uk", "www.amazon.ae", "www.amazon.com.au", "www.amazon.com.be", "www.amazon.com.br", "www.amazon.ca", "www.amazon.eg", "www.amazon.es", "www.amazon.fr", "www.amazon.ie", "www.amazon.in", "www.amazon.it", "www.amazon.co.jp", "www.amazon.com.mx", "www.amazon.nl", "www.amazon.pl", "www.amazon.sa", "www.amazon.se", "www.amazon.sg", "www.amazon.com.tr", "www.amazon.co.za"}, cobra.ShellCompDirectiveNoFileComp }) cmd.Flags().StringVar(&p_languageVar, "language", "", "language Language: Optional Amazon language code. Supported values depend on the selected domain.") - cmd.Flags().BoolVar(&p_otherSellersVar, "other-sellers", true, "otherSellers Other Sellers: If set to true, extracts the other sellers block from the product page.") + cmd.Flags().BoolVar(&p_otherSellersVar, "other-sellers", true, "otherSellers Other Sellers: Also collect the offers of other sellers competing for this item. This takes an extra request to Amazon and costs 5 credits on top of the base. Default is false.") cmd.Flags().BoolVar(&p_otherSellersVarNeg, "no-"+"other-sellers", false, "disable --other-sellers") cmd.Flags().StringVar(&p_shippingLocationVar, "shipping-location", "", "shippingLocation Shipping Location: The two-letter country code to define the country of the delivery address.") @@ -97,5 +97,5 @@ func newAmazonProductCmd() *cobra.Command { } func init() { - RegisterAPICommand("amazon", "Amazon", newAmazonProductCmd()) + RegisterAPICommand("ecommerce", "E-commerce", newAmazonProductCmd()) } diff --git a/cmd/gen_amazon_reviews.go b/cmd/gen_amazon_reviews.go index b966e11..274d978 100644 --- a/cmd/gen_amazon_reviews.go +++ b/cmd/gen_amazon_reviews.go @@ -146,5 +146,5 @@ func newAmazonReviewsCmd() *cobra.Command { } func init() { - RegisterAPICommand("amazon", "Amazon", newAmazonReviewsCmd()) + RegisterAPICommand("ecommerce", "E-commerce", newAmazonReviewsCmd()) } diff --git a/cmd/gen_amazon_search.go b/cmd/gen_amazon_search.go index e447b95..77f934a 100644 --- a/cmd/gen_amazon_search.go +++ b/cmd/gen_amazon_search.go @@ -97,5 +97,5 @@ func newAmazonSearchCmd() *cobra.Command { } func init() { - RegisterAPICommand("amazon", "Amazon", newAmazonSearchCmd()) + RegisterAPICommand("ecommerce", "E-commerce", newAmazonSearchCmd()) } diff --git a/cmd/gen_amazon_seller.go b/cmd/gen_amazon_seller.go index 4404f14..943c004 100644 --- a/cmd/gen_amazon_seller.go +++ b/cmd/gen_amazon_seller.go @@ -69,5 +69,5 @@ func newAmazonSellerCmd() *cobra.Command { } func init() { - RegisterAPICommand("amazon", "Amazon", newAmazonSellerCmd()) + RegisterAPICommand("ecommerce", "E-commerce", newAmazonSellerCmd()) } diff --git a/cmd/gen_amazon_seller_products.go b/cmd/gen_amazon_seller_products.go index 77941a6..0352c6b 100644 --- a/cmd/gen_amazon_seller_products.go +++ b/cmd/gen_amazon_seller_products.go @@ -74,5 +74,5 @@ func newAmazonSellerProductsCmd() *cobra.Command { } func init() { - RegisterAPICommand("amazon", "Amazon", newAmazonSellerProductsCmd()) + RegisterAPICommand("ecommerce", "E-commerce", newAmazonSellerProductsCmd()) } diff --git a/cmd/gen_booking_place.go b/cmd/gen_booking_place.go index e2be790..2e5187c 100644 --- a/cmd/gen_booking_place.go +++ b/cmd/gen_booking_place.go @@ -68,9 +68,9 @@ func newBookingPlaceCmd() *cobra.Command { } cmd.Flags().IntVar(&p_adultsVar, "adults", 2, "adults Adults: Number of adult guests across all rooms. (required)") _ = cmd.MarkFlagRequired("adults") - cmd.Flags().StringVar(&p_checkInDateVar, "check-in-date", "2026-06-01", "checkInDate Check-in Date: Check-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`. (required)") + cmd.Flags().StringVar(&p_checkInDateVar, "check-in-date", "2026-09-20", "checkInDate Check-in Date: Check-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`. (required)") _ = cmd.MarkFlagRequired("check-in-date") - cmd.Flags().StringVar(&p_checkOutDateVar, "check-out-date", "2026-06-05", "checkOutDate Check-out Date: Check-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`. (required)") + cmd.Flags().StringVar(&p_checkOutDateVar, "check-out-date", "2026-09-24", "checkOutDate Check-out Date: Check-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`. (required)") _ = cmd.MarkFlagRequired("check-out-date") cmd.Flags().IntVar(&p_childrenVar, "children", 0, "children Children Count: Number of child guests across all rooms (0–10). Pass `0` if there are no children. (required)") _ = cmd.MarkFlagRequired("children") diff --git a/cmd/gen_booking_search.go b/cmd/gen_booking_search.go index 1945f62..fe83152 100644 --- a/cmd/gen_booking_search.go +++ b/cmd/gen_booking_search.go @@ -246,9 +246,9 @@ func newBookingSearchCmd() *cobra.Command { return []string{"twinBeds", "doubleBed"}, cobra.ShellCompDirectiveNoFileComp }) cmd.Flags().IntVar(&p_bedroomsVar, "bedrooms", 0, "bedrooms Bedrooms: Minimum number of bedrooms in the property.") - cmd.Flags().StringVar(&p_checkInDateVar, "check-in-date", "2026-06-01", "checkInDate Check-in Date: Check-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`. (required)") + cmd.Flags().StringVar(&p_checkInDateVar, "check-in-date", "2026-09-20", "checkInDate Check-in Date: Check-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`. (required)") _ = cmd.MarkFlagRequired("check-in-date") - cmd.Flags().StringVar(&p_checkOutDateVar, "check-out-date", "2026-06-05", "checkOutDate Check-out Date: Check-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`. (required)") + cmd.Flags().StringVar(&p_checkOutDateVar, "check-out-date", "2026-09-24", "checkOutDate Check-out Date: Check-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`. (required)") _ = cmd.MarkFlagRequired("check-out-date") cmd.Flags().IntVar(&p_childrenVar, "children", 0, "children Children Count: Number of child guests across all rooms (0–10). Pass `0` if there are no children. (required)") _ = cmd.MarkFlagRequired("children") diff --git a/cmd/gen_google_flights.go b/cmd/gen_google_flights.go index d10acb8..9df485a 100644 --- a/cmd/gen_google_flights.go +++ b/cmd/gen_google_flights.go @@ -204,10 +204,10 @@ func newGoogleFlightsCmd() *cobra.Command { cmd.Flags().IntVar(&p_maxDurationVar, "max-duration", 0, "maxDuration Maximum Flight Duration: The maximum total flight duration in minutes.\n") cmd.Flags().Float64Var(&p_maxPriceVar, "max-price", 0, "maxPrice Maximum Price: Maximum price limit for the flight search, in the selected currency.\n") cmd.Flags().StringVar(&p_multiCityJsonVar, "multi-city-json", "", "multiCityJson Multi-city JSON: This parameter specifies flight details for multi-city trips. It is a JSON string containing multiple flight objects. Each object must include the following fields:\n\n- **departureId** – The departure airport code or location KGMID. Uses the same format as the main `departureId` parameter.\n- **arrivalId** – The arrival airport code or location KGMID. Uses the same format as the main `arrivalId` parameter.\n- **date** – The flight date. Uses the same format as the `outboundDate` parameter.\n- **times** *(optional)* – The time range for the flight. Uses the same format as the `outboundTimes` parameter.\n") - cmd.Flags().StringVar(&p_outboundDateVar, "outbound-date", "2026-08-15", "outboundDate Outbound Date: The outbound travel date in 'yyyy-MM-dd' format.\n (required)") + cmd.Flags().StringVar(&p_outboundDateVar, "outbound-date", "2026-09-20", "outboundDate Outbound Date: The outbound travel date in 'yyyy-MM-dd' format.\n (required)") _ = cmd.MarkFlagRequired("outbound-date") cmd.Flags().StringVar(&p_outboundTimesVar, "outbound-times", "", "outboundTimes Outbound Times: Set up to 4 time boundaries (2 for departure, 2 for arrival) to filter flights. Each number represents the start of an hour.\n\nExamples:\n - `6,20` → 6:00 AM - 9:00 PM departure\n - `1,15` → 1:00 AM - 4:00 PM departure\n - `7,18,2,21` → 7:00 AM - 9:00 PM departure, 2:00 AM - 10:00 PM arrival\n") - cmd.Flags().StringVar(&p_returnDateVar, "return-date", "2026-08-20", "returnDate Return Date: The return travel date in 'yyyy-MM-dd' format. Required when **type** is `roundTrip`.\n") + cmd.Flags().StringVar(&p_returnDateVar, "return-date", "2026-09-27", "returnDate Return Date: The return travel date in 'yyyy-MM-dd' format. Required when **type** is `roundTrip`.\n") cmd.Flags().StringVar(&p_returnTimesVar, "return-times", "", "returnTimes Return Times: Set up to 4 time boundaries (2 for departure, 2 for arrival) to filter return flights. Each number represents the start of an hour.\n\nExamples:\n - `6,20` → 6:00 AM - 9:00 PM departure\n - `1,15` → 1:00 AM - 4:00 PM departure\n - `7,18,2,21` → 7:00 AM - 9:00 PM departure, 2:00 AM - 10:00 PM arrival\n") cmd.Flags().BoolVar(&p_showHiddenVar, "show-hidden", false, "showHidden Show Hidden Fares: Indicates whether to include hidden options in the results.\n") cmd.Flags().StringVar(&p_sortByVar, "sort-by", "", "sortBy Sort By: Sort the flight results based on price, departure time, arrival time, etc.\n [allowed: topFlights|price|departureTime|arrivalTime|duration|emissions]") diff --git a/cmd/gen_google_hotels.go b/cmd/gen_google_hotels.go index 1a4788a..7253302 100644 --- a/cmd/gen_google_hotels.go +++ b/cmd/gen_google_hotels.go @@ -168,9 +168,9 @@ func newGoogleHotelsCmd() *cobra.Command { cmd.Flags().IntVar(&p_bathroomsVar, "bathrooms", 0, "bathrooms Bathrooms: Minimum number of bathrooms (vacation rentals only).\n") cmd.Flags().IntVar(&p_bedroomsVar, "bedrooms", 0, "bedrooms Bedrooms: Minimum number of bedrooms (vacation rentals only).\n") cmd.Flags().StringVar(&p_brandsVar, "brands", "", "brands Brands: Comma-separated list of brand IDs to filter by. Brand IDs are returned in the response under `brands` for the same query.\n") - cmd.Flags().StringVar(&p_checkInDateVar, "check-in-date", "2026-08-15", "checkInDate Check-in Date: The check-in date in 'yyyy-MM-dd' format.\n (required)") + cmd.Flags().StringVar(&p_checkInDateVar, "check-in-date", "2026-09-20", "checkInDate Check-in Date: The check-in date in 'yyyy-MM-dd' format.\n (required)") _ = cmd.MarkFlagRequired("check-in-date") - cmd.Flags().StringVar(&p_checkOutDateVar, "check-out-date", "2026-08-20", "checkOutDate Check-out Date: The check-out date in 'yyyy-MM-dd' format.\n (required)") + cmd.Flags().StringVar(&p_checkOutDateVar, "check-out-date", "2026-09-24", "checkOutDate Check-out Date: The check-out date in 'yyyy-MM-dd' format.\n (required)") _ = cmd.MarkFlagRequired("check-out-date") cmd.Flags().IntVar(&p_childrenVar, "children", 0, "children Children: Number of child guests (1-5). Total guests (adults + children) cannot exceed 6.\n") cmd.Flags().StringVar(&p_childrenAgesVar, "children-ages", "", "childrenAges Children Ages: Comma-separated list of children ages (e.g., `5,8,12`). Must match the number of children.\n") diff --git a/cmd/gen_google_scholar.go b/cmd/gen_google_scholar.go new file mode 100644 index 0000000..c2f4d81 --- /dev/null +++ b/cmd/gen_google_scholar.go @@ -0,0 +1,143 @@ +// Code generated by internal/gen. DO NOT EDIT. + +package cmd + +import ( + "encoding/json" + "fmt" + "net/url" + "strconv" + + "github.com/spf13/cobra" +) + +var ( + _ = json.Marshal + _ = fmt.Sprintf + _ = url.Values{} + _ = strconv.Itoa +) + +func newGoogleScholarCmd() *cobra.Command { + var p_asRrVar float64 + var p_asSdtVar string + var p_asVisVar float64 + var p_asYhiVar int + var p_asYloVar int + var p_citesVar string + var p_clusterVar string + var p_filterVar float64 + var p_hlVar string + var p_lrVar []string + var p_numVar int + var p_qVar string + var p_safeVar string + var p_scisbdVar int + var p_startVar int + + cmd := &cobra.Command{ + Use: "google-scholar", + Short: "Google Scholar API (5 credits/call)", + Long: "Provides real-time access to Google Scholar search results, including papers, citations, and related scholarly metadata.\n\nEndpoint: GET https://api.hasdata.com/scrape/google/scholar\nCost: 5 credits per call.", + Args: cobra.NoArgs, + PreRunE: func(c *cobra.Command, _ []string) error { + if c.Flags().Changed("lr") { + if err := validateEnumStringSlice("lr", p_lrVar, []string{"lang_ar", "lang_hy", "lang_bg", "lang_ca", "lang_cs", "lang_da", "lang_de", "lang_el", "lang_en", "lang_es", "lang_et", "lang_tl", "lang_fi", "lang_fr", "lang_hr", "lang_hi", "lang_hu", "lang_id", "lang_is", "lang_it", "lang_iw", "lang_he", "lang_ja", "lang_ko", "lang_lt", "lang_lv", "lang_nl", "lang_no", "lang_fa", "lang_pl", "lang_pt", "lang_ro", "lang_ru", "lang_sk", "lang_sl", "lang_sr", "lang_sv", "lang_th", "lang_tr", "lang_uk", "lang_vi", "lang_zh-CN", "lang_zh-TW"}); err != nil { + return err + } + } + if c.Flags().Changed("safe") { + if err := validateEnumString("safe", p_safeVar, []string{"active", "off"}); err != nil { + return err + } + } + return nil + }, + RunE: func(c *cobra.Command, _ []string) error { + ctx := c.Context() + cli, err := Client() + if err != nil { + return err + } + params := url.Values{} + if c.Flags().Changed("as-rr") { + params.Set("asRr", strconv.FormatFloat(p_asRrVar, 'f', -1, 64)) + } + if c.Flags().Changed("as-sdt") { + params.Set("asSdt", p_asSdtVar) + } + if c.Flags().Changed("as-vis") { + params.Set("asVis", strconv.FormatFloat(p_asVisVar, 'f', -1, 64)) + } + if c.Flags().Changed("as-yhi") { + params.Set("asYhi", strconv.Itoa(p_asYhiVar)) + } + if c.Flags().Changed("as-ylo") { + params.Set("asYlo", strconv.Itoa(p_asYloVar)) + } + if c.Flags().Changed("cites") { + params.Set("cites", p_citesVar) + } + if c.Flags().Changed("cluster") { + params.Set("cluster", p_clusterVar) + } + if c.Flags().Changed("filter") { + params.Set("filter", strconv.FormatFloat(p_filterVar, 'f', -1, 64)) + } + if c.Flags().Changed("hl") { + params.Set("hl", p_hlVar) + } + if c.Flags().Changed("lr") { + for _, v := range p_lrVar { + params.Add("lr"+"[]", v) + } + } + if c.Flags().Changed("num") { + params.Set("num", strconv.Itoa(p_numVar)) + } + params.Set("q", p_qVar) + if c.Flags().Changed("safe") { + params.Set("safe", p_safeVar) + } + if c.Flags().Changed("scisbd") { + params.Set("scisbd", strconv.Itoa(p_scisbdVar)) + } + if c.Flags().Changed("start") { + params.Set("start", strconv.Itoa(p_startVar)) + } + resp, err := cli.Do(ctx, "GET", "https://api.hasdata.com/scrape/google/scholar", params, nil) + if err != nil { + return err + } + return WriteResponse(c, resp) + }, + } + cmd.Flags().Float64Var(&p_asRrVar, "as-rr", 0, "asRr Review Articles Only: Set to 1 to return review articles only, or 0 (default) to return all articles.") + cmd.Flags().StringVar(&p_asSdtVar, "as-sdt", "0,5", "asSdt Search Type / Filter: Search type/filter, e.g. `0,5` for the default Articles filter, `4` for case law with court codes, or `0`/`7` for patents.") + cmd.Flags().Float64Var(&p_asVisVar, "as-vis", 0, "asVis Exclude Citations: Set to 1 to exclude citations from the results, or 0 (default) to include them.") + cmd.Flags().IntVar(&p_asYhiVar, "as-yhi", 2024, "asYhi Year To: Return results published up to and including this year.") + cmd.Flags().IntVar(&p_asYloVar, "as-ylo", 2020, "asYlo Year From: Return results published from this year onward.") + cmd.Flags().StringVar(&p_citesVar, "cites", "", "cites Cited By Search: Unique article ID to look up articles that cite it, as returned in a result's `citedBy.citesId`.") + cmd.Flags().StringVar(&p_clusterVar, "cluster", "", "cluster All Versions Search: Unique article ID to look up all indexed versions of that article, as returned in a result's `versions.clusterId`.") + cmd.Flags().Float64Var(&p_filterVar, "filter", 0, "filter Results Filtering: Defines whether to enable or disable the filters for 'Similar Results' and 'Omitted Results'. Set to 1 (default) to enable these filters, or 0 to disable them.\n") + cmd.Flags().StringVar(&p_hlVar, "hl", "", "hl Language: The two-letter language code for the language you want to use for the search.") + cmd.Flags().StringSliceVar(&p_lrVar, "lr", nil, "lr Set Multiple Languages: The 'lr' parameter specifies the language of the websites to return results from. This parameter filters results based on the language of the web content.") + _ = cmd.RegisterFlagCompletionFunc("lr", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"lang_ar", "lang_hy", "lang_bg", "lang_ca", "lang_cs", "lang_da", "lang_de", "lang_el", "lang_en", "lang_es", "lang_et", "lang_tl", "lang_fi", "lang_fr", "lang_hr", "lang_hi", "lang_hu", "lang_id", "lang_is", "lang_it", "lang_iw", "lang_he", "lang_ja", "lang_ko", "lang_lt", "lang_lv", "lang_nl", "lang_no", "lang_fa", "lang_pl", "lang_pt", "lang_ro", "lang_ru", "lang_sk", "lang_sl", "lang_sr", "lang_sv", "lang_th", "lang_tr", "lang_uk", "lang_vi", "lang_zh-CN", "lang_zh-TW"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().IntVar(&p_numVar, "num", 0, "num Number of Results: Maximum number of results to return per page.") + cmd.Flags().StringVar(&p_qVar, "q", "machine learning", "q Search Query: Search query. Supports Google Scholar search helpers such as `author:` and `source:`. (required)") + _ = cmd.MarkFlagRequired("q") + cmd.Flags().StringVar(&p_safeVar, "safe", "", "safe Adult Content Filtering: Adult content filtering option. [allowed: active|off]") + _ = cmd.RegisterFlagCompletionFunc("safe", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"active", "off"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().IntVar(&p_scisbdVar, "scisbd", 0, "scisbd Sort By Date: Sort results by date instead of relevance: 1 for abstracts only, 2 for everything. Omit for relevance sorting.") + cmd.Flags().IntVar(&p_startVar, "start", 0, "start Result Offset: Result offset for pagination, where 0 is the first result.") + + return cmd +} + +func init() { + RegisterAPICommand("google_scholar", "Google Scholar", newGoogleScholarCmd()) +} diff --git a/cmd/gen_google_scholar_cite.go b/cmd/gen_google_scholar_cite.go new file mode 100644 index 0000000..da33e4c --- /dev/null +++ b/cmd/gen_google_scholar_cite.go @@ -0,0 +1,60 @@ +// Code generated by internal/gen. DO NOT EDIT. + +package cmd + +import ( + "encoding/json" + "fmt" + "net/url" + "strconv" + + "github.com/spf13/cobra" +) + +var ( + _ = json.Marshal + _ = fmt.Sprintf + _ = url.Values{} + _ = strconv.Itoa +) + +func newGoogleScholarCiteCmd() *cobra.Command { + var p_hlVar string + var p_qVar string + + cmd := &cobra.Command{ + Use: "google-scholar-cite", + Short: "Google Scholar Cite API (5 credits/call)", + Long: "Provides real-time access to Google Scholar citation formats and reference-manager export links for a single organic search result.\n\nEndpoint: GET https://api.hasdata.com/scrape/google/scholar-cite\nCost: 5 credits per call.", + Args: cobra.NoArgs, + PreRunE: func(c *cobra.Command, _ []string) error { + return nil + }, + RunE: func(c *cobra.Command, _ []string) error { + ctx := c.Context() + cli, err := Client() + if err != nil { + return err + } + params := url.Values{} + if c.Flags().Changed("hl") { + params.Set("hl", p_hlVar) + } + params.Set("q", p_qVar) + resp, err := cli.Do(ctx, "GET", "https://api.hasdata.com/scrape/google/scholar-cite", params, nil) + if err != nil { + return err + } + return WriteResponse(c, resp) + }, + } + cmd.Flags().StringVar(&p_hlVar, "hl", "", "hl Language: The two-letter language code for the language you want to use for the search.") + cmd.Flags().StringVar(&p_qVar, "q", "EQ8shYj8Ai8J", "q Result ID: The `resultId` of a Google Scholar organic result, as returned by the google/scholar endpoint. (required)") + _ = cmd.MarkFlagRequired("q") + + return cmd +} + +func init() { + RegisterAPICommand("google_scholar", "Google Scholar", newGoogleScholarCiteCmd()) +} diff --git a/cmd/gen_redfin_listing.go b/cmd/gen_redfin_listing.go index 1556c1a..a536dc1 100644 --- a/cmd/gen_redfin_listing.go +++ b/cmd/gen_redfin_listing.go @@ -596,5 +596,5 @@ func newRedfinListingCmd() *cobra.Command { } func init() { - RegisterAPICommand("redfin", "Redfin", newRedfinListingCmd()) + RegisterAPICommand("real_estate", "Real Estate", newRedfinListingCmd()) } diff --git a/cmd/gen_redfin_property.go b/cmd/gen_redfin_property.go index d28ec43..eab64ea 100644 --- a/cmd/gen_redfin_property.go +++ b/cmd/gen_redfin_property.go @@ -51,5 +51,5 @@ func newRedfinPropertyCmd() *cobra.Command { } func init() { - RegisterAPICommand("redfin", "Redfin", newRedfinPropertyCmd()) + RegisterAPICommand("real_estate", "Real Estate", newRedfinPropertyCmd()) } diff --git a/cmd/gen_shopify_collections.go b/cmd/gen_shopify_collections.go index cd6cec6..d88f90d 100644 --- a/cmd/gen_shopify_collections.go +++ b/cmd/gen_shopify_collections.go @@ -61,5 +61,5 @@ func newShopifyCollectionsCmd() *cobra.Command { } func init() { - RegisterAPICommand("shopify", "Shopify", newShopifyCollectionsCmd()) + RegisterAPICommand("ecommerce", "E-commerce", newShopifyCollectionsCmd()) } diff --git a/cmd/gen_shopify_products.go b/cmd/gen_shopify_products.go index 3d2ba7e..8475832 100644 --- a/cmd/gen_shopify_products.go +++ b/cmd/gen_shopify_products.go @@ -66,5 +66,5 @@ func newShopifyProductsCmd() *cobra.Command { } func init() { - RegisterAPICommand("shopify", "Shopify", newShopifyProductsCmd()) + RegisterAPICommand("ecommerce", "E-commerce", newShopifyProductsCmd()) } diff --git a/cmd/gen_walmart_product.go b/cmd/gen_walmart_product.go new file mode 100644 index 0000000..b2d0d95 --- /dev/null +++ b/cmd/gen_walmart_product.go @@ -0,0 +1,92 @@ +// Code generated by internal/gen. DO NOT EDIT. + +package cmd + +import ( + "encoding/json" + "fmt" + "net/url" + "strconv" + + "github.com/spf13/cobra" +) + +var ( + _ = json.Marshal + _ = fmt.Sprintf + _ = url.Values{} + _ = strconv.Itoa +) + +func newWalmartProductCmd() *cobra.Command { + var p_domainVar string + var p_itemIdVar string + var p_languageVar string + var p_otherOffersVar bool + var p_urlVar string + + cmd := &cobra.Command{ + Use: "walmart-product", + Short: "Walmart Product Scraper API (10 credits/call)", + Long: "The Walmart Product Scraper API returns the full detail page of a single Walmart item, and optionally the offers of other sellers competing for the same product.\n\nEndpoint: GET https://api.hasdata.com/scrape/walmart/product\nCost: 10 credits per call.", + Args: cobra.NoArgs, + PreRunE: func(c *cobra.Command, _ []string) error { + if c.Flags().Changed("domain") { + if err := validateEnumString("domain", p_domainVar, []string{"walmart.com", "walmart.ca"}); err != nil { + return err + } + } + if c.Flags().Changed("language") { + if err := validateEnumString("language", p_languageVar, []string{"en", "es", "fr"}); err != nil { + return err + } + } + return nil + }, + RunE: func(c *cobra.Command, _ []string) error { + ctx := c.Context() + cli, err := Client() + if err != nil { + return err + } + params := url.Values{} + if c.Flags().Changed("domain") { + params.Set("domain", p_domainVar) + } + if c.Flags().Changed("item-id") { + params.Set("itemId", p_itemIdVar) + } + if c.Flags().Changed("language") { + params.Set("language", p_languageVar) + } + if c.Flags().Changed("other-offers") { + params.Set("otherOffers", strconv.FormatBool(p_otherOffersVar)) + } + if c.Flags().Changed("url") { + params.Set("url", p_urlVar) + } + resp, err := cli.Do(ctx, "GET", "https://api.hasdata.com/scrape/walmart/product", params, nil) + if err != nil { + return err + } + return WriteResponse(c, resp) + }, + } + cmd.Flags().StringVar(&p_domainVar, "domain", "", "domain Domain: Walmart storefront the item belongs to. Each storefront has its own catalog, item ids, prices and currency, so an id from one storefront does not resolve on another. Ignored when `url` is provided. Default is `walmart.com`. [allowed: walmart.com|walmart.ca]") + _ = cmd.RegisterFlagCompletionFunc("domain", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"walmart.com", "walmart.ca"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().StringVar(&p_itemIdVar, "item-id", "14977205582", "itemId Item ID: Walmart item id, taken from a product URL or from the id field of the Walmart Search API response. On `walmart.com` it is numeric (for example `14977205582`), on `walmart.ca` an alphanumeric code (for example `6NZMJ5CW6MH2`). Required unless `url` is provided.") + cmd.Flags().StringVar(&p_languageVar, "language", "en", "language Language: Language of the product details. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default. [allowed: en|es|fr]") + _ = cmd.RegisterFlagCompletionFunc("language", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"en", "es", "fr"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().BoolVar(&p_otherOffersVar, "other-offers", false, "otherOffers Other Sellers: Also collect the offers of other sellers competing for this item - each seller name, storefront, price, condition, shipping cost, delivery date and return policy. This takes an extra request to Walmart and costs 5 credits on top of the base 10, whether or not the item turns out to have competing sellers. How many competitors the item advertises, and the cheapest competing price, are returned in the `otherOffers` block whether the switch is on or off, so it can be left off until the count shows there is something to collect. Default is `false`.") + cmd.Flags().StringVar(&p_urlVar, "url", "https://www.walmart.com/ip/Samsung-Galaxy-S25-Ultra-256GB-Unlocked-Android-Cell-Phone-with-200MP-Camera-Titanium-Blue/14977205582", "url Product URL: A full Walmart product URL to scrape as is. When provided, it overrides `itemId` and the storefront is taken from the URL itself. Required unless `itemId` is provided.") + + return cmd +} + +func init() { + RegisterAPICommand("ecommerce", "E-commerce", newWalmartProductCmd()) +} diff --git a/cmd/gen_walmart_reviews.go b/cmd/gen_walmart_reviews.go new file mode 100644 index 0000000..d86034e --- /dev/null +++ b/cmd/gen_walmart_reviews.go @@ -0,0 +1,125 @@ +// Code generated by internal/gen. DO NOT EDIT. + +package cmd + +import ( + "encoding/json" + "fmt" + "net/url" + "strconv" + + "github.com/spf13/cobra" +) + +var ( + _ = json.Marshal + _ = fmt.Sprintf + _ = url.Values{} + _ = strconv.Itoa +) + +func newWalmartReviewsCmd() *cobra.Command { + var p_aspectIdVar string + var p_conditionVar string + var p_domainVar string + var p_itemIdVar string + var p_languageVar string + var p_pageVar int + var p_ratingVar int + var p_sortVar string + var p_urlVar string + var p_verifiedPurchasesOnlyVar bool + + cmd := &cobra.Command{ + Use: "walmart-reviews", + Short: "Walmart Reviews Scraper API (10 credits/call)", + Long: "The Walmart Reviews Scraper API returns the customer reviews of a single Walmart item, ten a page, with the sorting and filtering the product page itself offers.\n\nEndpoint: GET https://api.hasdata.com/scrape/walmart/reviews\nCost: 10 credits per call.", + Args: cobra.NoArgs, + PreRunE: func(c *cobra.Command, _ []string) error { + if c.Flags().Changed("domain") { + if err := validateEnumString("domain", p_domainVar, []string{"walmart.com", "walmart.ca"}); err != nil { + return err + } + } + if c.Flags().Changed("language") { + if err := validateEnumString("language", p_languageVar, []string{"en", "es", "fr"}); err != nil { + return err + } + } + if c.Flags().Changed("sort") { + if err := validateEnumString("sort", p_sortVar, []string{"mostRelevant", "mostRecent", "mostHelpful", "highestRated", "lowestRated", "oldest"}); err != nil { + return err + } + } + return nil + }, + RunE: func(c *cobra.Command, _ []string) error { + ctx := c.Context() + cli, err := Client() + if err != nil { + return err + } + params := url.Values{} + if c.Flags().Changed("aspect-id") { + params.Set("aspectId", p_aspectIdVar) + } + if c.Flags().Changed("condition") { + params.Set("condition", p_conditionVar) + } + if c.Flags().Changed("domain") { + params.Set("domain", p_domainVar) + } + if c.Flags().Changed("item-id") { + params.Set("itemId", p_itemIdVar) + } + if c.Flags().Changed("language") { + params.Set("language", p_languageVar) + } + if c.Flags().Changed("page") { + params.Set("page", strconv.Itoa(p_pageVar)) + } + if c.Flags().Changed("rating") { + params.Set("rating", strconv.Itoa(p_ratingVar)) + } + if c.Flags().Changed("sort") { + params.Set("sort", p_sortVar) + } + if c.Flags().Changed("url") { + params.Set("url", p_urlVar) + } + if c.Flags().Changed("verified-purchases-only") { + params.Set("verifiedPurchasesOnly", strconv.FormatBool(p_verifiedPurchasesOnlyVar)) + } + resp, err := cli.Do(ctx, "GET", "https://api.hasdata.com/scrape/walmart/reviews", params, nil) + if err != nil { + return err + } + return WriteResponse(c, resp) + }, + } + cmd.Flags().StringVar(&p_aspectIdVar, "aspect-id", "", "aspectId Frequent Mention: Return only reviews mentioning one topic. Send the `value` of the topic you want, taken from the Frequent mentions group of the `filters` block in the response - given `{\"name\": \"Battery Life\", \"value\": \"6049\", \"count\": 8}` you send `6049`, and `count` is how many reviews to expect. **Only one topic per request**, Walmart rejects a list of them. Topics belong to the product rather than to Walmart: a phone offers Battery Life or Display, a coffee offers Flavor or Aroma, and some items offer none at all - so make an unfiltered request first and read the block, instead of reusing a topic id across products.") + cmd.Flags().StringVar(&p_conditionVar, "condition", "", "condition Condition: Return only reviews written about one condition of the item. Send the `value` from the Condition group of the `filters` block - given `{\"name\": \"Restored: Like New\", \"value\": \"5\"}` you send `5`. **Only one condition per request.** This group appears for items Walmart sells in several conditions, and only when the request already names one: reach the variant through the `url` parameter with its `conditionGroupCode`, as in `https://www.walmart.com/ip/1028936148?conditionGroupCode=2`, and the block then lists the condition that variant carries. An item sold in a single condition has no such group, and no reviews to separate by it.") + cmd.Flags().StringVar(&p_domainVar, "domain", "", "domain Domain: Walmart storefront the item belongs to. Each storefront has its own catalog, item ids and review pool, so an id from one storefront does not resolve on another. Ignored when `url` is provided. Default is `walmart.com`. [allowed: walmart.com|walmart.ca]") + _ = cmd.RegisterFlagCompletionFunc("domain", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"walmart.com", "walmart.ca"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().StringVar(&p_itemIdVar, "item-id", "1028936148", "itemId Item ID: Walmart item id, taken from a product URL or from the id field of the Walmart Search API response. On `walmart.com` it is numeric (for example `14977205582`), on `walmart.ca` an alphanumeric code (for example `6NZMJ5CW6MH2`). Required unless `url` is provided.") + cmd.Flags().StringVar(&p_languageVar, "language", "en", "language Language: Language of the review page. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default. Reviews themselves are returned in the language their author wrote them in. [allowed: en|es|fr]") + _ = cmd.RegisterFlagCompletionFunc("language", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"en", "es", "fr"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().IntVar(&p_pageVar, "page", 1, "page Page: Page of reviews to return, ten reviews a page. The response reports the last available page in `pagination.totalPages`, the next one in `pagination.nextPage`, and how many reviews the current filters select in `pagination.totalResults`. Note that only reviews carrying written text are paginated, so the ceiling follows `reviewsInformation.totalReviews` rather than the larger `reviewsInformation.totalRatings`. Default is `1`.") + cmd.Flags().IntVar(&p_ratingVar, "rating", 0, "rating Star Rating: Return only reviews carrying this star rating, from `1` to `5`. The Star rating group of the `filters` block lists the ratings this item actually has, each with the `value` to send here and a `count` of how many reviews to expect.") + cmd.Flags().StringVar(&p_sortVar, "sort", "mostRelevant", "sort Sort By: Order of the returned reviews, named as the Walmart review page names it. Default is `mostRelevant`. [allowed: mostRelevant|mostRecent|mostHelpful|highestRated|lowestRated|oldest]") + _ = cmd.RegisterFlagCompletionFunc("sort", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"mostRelevant", "mostRecent", "mostHelpful", "highestRated", "lowestRated", "oldest"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().StringVar(&p_urlVar, "url", "https://www.walmart.com/ip/Restored-Apple-iPhone-14-Carrier-Unlocked-128-GB-Starlight-MPUN3LL-A-Refurbished/1028936148", "url Product URL: A full Walmart product URL whose reviews to scrape. When provided, it overrides `itemId` and the storefront is taken from the URL itself. Required unless `itemId` is provided.") + cmd.Flags().BoolVar(&p_verifiedPurchasesOnlyVar, "verified-purchases-only", false, "verifiedPurchasesOnly Verified Purchases Only: Return only reviews left by customers whose purchase Walmart confirmed. Narrows the pool considerably, since most reviews are unverified or syndicated from the manufacturer.") + + return cmd +} + +func init() { + RegisterAPICommand("ecommerce", "E-commerce", newWalmartReviewsCmd()) +} diff --git a/cmd/gen_walmart_search.go b/cmd/gen_walmart_search.go new file mode 100644 index 0000000..b6ac907 --- /dev/null +++ b/cmd/gen_walmart_search.go @@ -0,0 +1,138 @@ +// Code generated by internal/gen. DO NOT EDIT. + +package cmd + +import ( + "encoding/json" + "fmt" + "net/url" + "strconv" + + "github.com/spf13/cobra" +) + +var ( + _ = json.Marshal + _ = fmt.Sprintf + _ = url.Values{} + _ = strconv.Itoa +) + +func newWalmartSearchCmd() *cobra.Command { + var p_catIdVar string + var p_deliveryTypeVar string + var p_domainVar string + var p_facetVar string + var p_languageVar string + var p_maxPriceVar float64 + var p_minPriceVar float64 + var p_pageVar int + var p_qVar string + var p_sortVar string + var p_urlVar string + + cmd := &cobra.Command{ + Use: "walmart-search", + Short: "Walmart Search Scraper API (10 credits/call)", + Long: "The Walmart Search Scraper API allows users to get search results from Walmart based on the specified query, category and storefront. This API enables searching for products on Walmart.\n\nEndpoint: GET https://api.hasdata.com/scrape/walmart/search\nCost: 10 credits per call.", + Args: cobra.NoArgs, + PreRunE: func(c *cobra.Command, _ []string) error { + if c.Flags().Changed("delivery-type") { + if err := validateEnumString("delivery-type", p_deliveryTypeVar, []string{"shipping", "pickup"}); err != nil { + return err + } + } + if c.Flags().Changed("domain") { + if err := validateEnumString("domain", p_domainVar, []string{"walmart.com", "walmart.ca"}); err != nil { + return err + } + } + if c.Flags().Changed("language") { + if err := validateEnumString("language", p_languageVar, []string{"en", "es", "fr"}); err != nil { + return err + } + } + if c.Flags().Changed("sort") { + if err := validateEnumString("sort", p_sortVar, []string{"bestMatch", "priceLowToHigh", "priceHighToLow", "bestseller", "highlyRated", "newArrivals"}); err != nil { + return err + } + } + return nil + }, + RunE: func(c *cobra.Command, _ []string) error { + ctx := c.Context() + cli, err := Client() + if err != nil { + return err + } + params := url.Values{} + if c.Flags().Changed("cat-id") { + params.Set("catId", p_catIdVar) + } + if c.Flags().Changed("delivery-type") { + params.Set("deliveryType", p_deliveryTypeVar) + } + if c.Flags().Changed("domain") { + params.Set("domain", p_domainVar) + } + if c.Flags().Changed("facet") { + params.Set("facet", p_facetVar) + } + if c.Flags().Changed("language") { + params.Set("language", p_languageVar) + } + if c.Flags().Changed("max-price") { + params.Set("maxPrice", strconv.FormatFloat(p_maxPriceVar, 'f', -1, 64)) + } + if c.Flags().Changed("min-price") { + params.Set("minPrice", strconv.FormatFloat(p_minPriceVar, 'f', -1, 64)) + } + if c.Flags().Changed("page") { + params.Set("page", strconv.Itoa(p_pageVar)) + } + if c.Flags().Changed("q") { + params.Set("q", p_qVar) + } + if c.Flags().Changed("sort") { + params.Set("sort", p_sortVar) + } + if c.Flags().Changed("url") { + params.Set("url", p_urlVar) + } + resp, err := cli.Do(ctx, "GET", "https://api.hasdata.com/scrape/walmart/search", params, nil) + if err != nil { + return err + } + return WriteResponse(c, resp) + }, + } + cmd.Flags().StringVar(&p_catIdVar, "cat-id", "", "catId Category ID: Walmart category id, taken from a category URL (for example `976759_1086446_1229651`). Combine it with `q` to search inside a category, or send it alone to browse the whole category. Required unless `q` is provided.") + cmd.Flags().StringVar(&p_deliveryTypeVar, "delivery-type", "shipping", "deliveryType Delivery Type: Keep only the products available with the selected fulfillment method. Default is `shipping`. Note that `pickup` is answered against one Walmart store, so an item in stock nationally can still be unavailable for `pickup` nearby - the response then reports that nothing matched the filters rather than that the query had no results. [allowed: shipping|pickup]") + _ = cmd.RegisterFlagCompletionFunc("delivery-type", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"shipping", "pickup"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().StringVar(&p_domainVar, "domain", "", "domain Domain: Walmart storefront to search. Each storefront has its own catalog, prices and currency. Default is `walmart.com`. [allowed: walmart.com|walmart.ca]") + _ = cmd.RegisterFlagCompletionFunc("domain", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"walmart.com", "walmart.ca"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().StringVar(&p_facetVar, "facet", "brand:Great Value\nretailer_type:Walmart", "facet Facet Filter: Walmart filter in the `name:value` form, for example `brand:Great Value`. Every value available for a query is listed in the facets block of the response, each one carrying the exact string to send back here, so a first unfiltered request tells you what can be filtered on. To combine filters, put each one on its own line. The double-pipe form Walmart's own urls use `brand:Great Value||retailer_type:Walmart` is also accepted.") + cmd.Flags().StringVar(&p_languageVar, "language", "en", "language Language: Language of the results. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default. [allowed: en|es|fr]") + _ = cmd.RegisterFlagCompletionFunc("language", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"en", "es", "fr"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().Float64Var(&p_maxPriceVar, "max-price", 0, "maxPrice Maximum Price: Upper bound of the price range, in the storefront currency.") + cmd.Flags().Float64Var(&p_minPriceVar, "min-price", 0, "minPrice Minimum Price: Lower bound of the price range, in the storefront currency.") + cmd.Flags().IntVar(&p_pageVar, "page", 0, "page Page Number: Page number for pagination (e.g., `1` for the first page, `2` for the second page, etc.). Walmart stops serving results after roughly page 10, returning an empty page beyond that.") + cmd.Flags().StringVar(&p_qVar, "q", "coffee", "q Search Query: The search term for which to get the search results. It can be omitted only when `catId` is provided, to browse a whole category instead of searching.") + cmd.Flags().StringVar(&p_sortVar, "sort", "bestMatch", "sort Sort By: The sorting option for the search results. [allowed: bestMatch|priceLowToHigh|priceHighToLow|bestseller|highlyRated|newArrivals]") + _ = cmd.RegisterFlagCompletionFunc("sort", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { + return []string{"bestMatch", "priceLowToHigh", "priceHighToLow", "bestseller", "highlyRated", "newArrivals"}, cobra.ShellCompDirectiveNoFileComp + }) + cmd.Flags().StringVar(&p_urlVar, "url", "", "url Search URL: A full Walmart search or category URL to scrape as is. When provided, it overrides `q`, `catId` and the other search parameters, and the storefront is taken from the URL itself.") + + return cmd +} + +func init() { + RegisterAPICommand("ecommerce", "E-commerce", newWalmartSearchCmd()) +} diff --git a/cmd/gen_zillow_listing.go b/cmd/gen_zillow_listing.go index 5c16be5..a2d5fa1 100644 --- a/cmd/gen_zillow_listing.go +++ b/cmd/gen_zillow_listing.go @@ -277,7 +277,7 @@ func newZillowListingCmd() *cobra.Command { }) cmd.Flags().Float64Var(&p_lotSize_maxVar, "lot-size-max", 0, "lotSize[max] Lot Size Max: The maximum lot size.") cmd.Flags().Float64Var(&p_lotSize_minVar, "lot-size-min", 0, "lotSize[min] Lot Size Min: The minimum lot size.") - cmd.Flags().StringVar(&p_moveInDateVar, "move-in-date", "", "moveInDate Move In Date: The desired move-in date.") + cmd.Flags().StringVar(&p_moveInDateVar, "move-in-date", "", "moveInDate Move In Date: The desired move-in date in `YYYY-MM-DD` format.") cmd.Flags().BoolVar(&p_mustHaveGarageVar, "must-have-garage", false, "mustHaveGarage Must Have Garage: If set to true, only listings with a garage will be included.") cmd.Flags().StringSliceVar(&p_otherAmenitiesVar, "other-amenities", nil, "otherAmenities[] Other Amenities: An array of other amenities.") _ = cmd.RegisterFlagCompletionFunc("other-amenities", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) { @@ -322,5 +322,5 @@ func newZillowListingCmd() *cobra.Command { } func init() { - RegisterAPICommand("zillow", "Zillow", newZillowListingCmd()) + RegisterAPICommand("real_estate", "Real Estate", newZillowListingCmd()) } diff --git a/cmd/gen_zillow_property.go b/cmd/gen_zillow_property.go index 54a19eb..119c111 100644 --- a/cmd/gen_zillow_property.go +++ b/cmd/gen_zillow_property.go @@ -56,5 +56,5 @@ func newZillowPropertyCmd() *cobra.Command { } func init() { - RegisterAPICommand("zillow", "Zillow", newZillowPropertyCmd()) + RegisterAPICommand("real_estate", "Real Estate", newZillowPropertyCmd()) } diff --git a/internal/gen/spec-hash.txt b/internal/gen/spec-hash.txt index b519b34..211de66 100644 --- a/internal/gen/spec-hash.txt +++ b/internal/gen/spec-hash.txt @@ -1 +1 @@ -e5451e3be6771c1b0f5ee61741d45e7b17312f9ffedcfba4369fd8c759b47d71 +c88357ee10adba60b83bbc245b509ddf646600b67dbb9f744238fd6f806d067e diff --git a/pr-body.md b/pr-body.md index 248a77e..a211ce0 100644 --- a/pr-body.md +++ b/pr-body.md @@ -1,38 +1,34 @@ ## Changes - GENERATION_REPORT.md | 13 ++++-- - cmd/gen_airbnb_listing.go | 27 +++++++++-- - cmd/gen_bing_serp.go | 28 ++++++------ - cmd/gen_booking_place.go | 2 +- - cmd/gen_booking_search.go | 2 +- - cmd/gen_google_images.go | 2 +- - cmd/gen_google_immersive_product.go | 2 +- - cmd/gen_google_maps.go | 4 +- - cmd/gen_google_maps_reviews.go | 6 +-- - cmd/gen_google_news.go | 2 +- - cmd/gen_google_serp.go | 2 +- - cmd/gen_google_serp_light.go | 2 +- - cmd/gen_google_shopping.go | 2 +- - cmd/gen_instagram_profile.go | 2 +- - cmd/gen_redfin_listing.go | 2 +- - cmd/gen_web_scraping.go | 2 +- - internal/gen/spec-hash.txt | 2 +- - pr-body.md | 90 ------------------------------------- - 18 files changed, 65 insertions(+), 127 deletions(-) + GENERATION_REPORT.md | 27 ++++++++----- + cmd/gen_airbnb_listing.go | 6 +-- + cmd/gen_amazon_product.go | 4 +- + cmd/gen_amazon_reviews.go | 2 +- + cmd/gen_amazon_search.go | 2 +- + cmd/gen_amazon_seller.go | 2 +- + cmd/gen_amazon_seller_products.go | 2 +- + cmd/gen_booking_place.go | 4 +- + cmd/gen_booking_search.go | 4 +- + cmd/gen_google_flights.go | 4 +- + cmd/gen_google_hotels.go | 4 +- + cmd/gen_redfin_listing.go | 2 +- + cmd/gen_redfin_property.go | 2 +- + cmd/gen_shopify_collections.go | 2 +- + cmd/gen_shopify_products.go | 2 +- + cmd/gen_zillow_listing.go | 4 +- + cmd/gen_zillow_property.go | 2 +- + internal/gen/spec-hash.txt | 2 +- + pr-body.md | 84 --------------------------------------- + 19 files changed, 41 insertions(+), 120 deletions(-) ## Generation Report # Generation Report -Generated at: 2026-08-31T07:13:05Z +Generated at: 2026-09-08T07:06:25Z -## APIs generated (55) +## APIs generated (60) - airbnb-listing - airbnb-property -- amazon-product -- amazon-reviews -- amazon-search -- amazon-seller -- amazon-seller-products - bing-serp - booking-place - booking-search @@ -42,6 +38,16 @@ Generated at: 2026-08-31T07:13:05Z - yelp-reviews - yelp-search - duckduckgo +- amazon-product +- amazon-reviews +- amazon-search +- amazon-seller +- amazon-seller-products +- shopify-collections +- shopify-products +- walmart-product +- walmart-reviews +- walmart-search - google-images - google-maps - google-maps-contributor-reviews @@ -57,6 +63,8 @@ Generated at: 2026-08-31T07:13:05Z - google-serp-light - google-shopping - google-short-videos +- google-scholar +- google-scholar-cite - google-flights - google-hotels - google-trends @@ -66,8 +74,8 @@ Generated at: 2026-08-31T07:13:05Z - indeed-listing - redfin-listing - redfin-property -- shopify-collections -- shopify-products +- zillow-listing +- zillow-property - instagram-posts - instagram-profile - tiktok-comments @@ -79,8 +87,6 @@ Generated at: 2026-08-31T07:13:05Z - youtube-search-api - youtube-transcript-api - youtube-video-api -- zillow-listing -- zillow-property ## Deprecated APIs (hidden in help) - amazon-reviews