Holiday markets around Iowa to spice up your gift shopping

Receiving gifts is great, and giving them can feel even better. But even the best gift givers can find themselves scrolling glassy-eyed through Cyber Monday sales, sweating in a mile-long self-checkout line or cursing the supply chain gods as the estimated delivery date gets bumped to Dec. 26.

Give yourself a present this year and try to enjoy the gift shopping process! Holiday markets across Iowa celebrate local vendors, Old World traditions and family friendly frivolity, helping you make some memories while crossing names off your list. Rather than seek out the perfect gift, mill around the market with some mulled wine and let something special find you. All markets are free and open to the public.

Downtown Swisher Holiday Market

Nov. 5
8 a.m.-2 p.m.

This small-town tradition features special deals from a range of local businesses, including Vault Boutique, Plum Creek Boutique, Kava House and Salon Two Twenty One. More than 20 vendors in the Swisher Legion will table the market, with wine tastings, live music at Black Squirrel Tap and a screening of the Iowa vs. Purdue football game to keep the party going.

Hampton Holiday Craft and Vendor Fair

Franklin County Convention Center
Saturday, Nov. 12
11 a.m.-3 p.m.

Hosted by Iowa author Amber Rodgers, this fifth-annual fair features over 40 vendors, from crafters selling their wares to authors signing books. Grab lunch from Mama Dee’s Mexican Food Truck, take a photo with Santa and even “adopt” a child or family to brighten their holiday season.

Handcrafted Market

250 Ansborough Ave, Waterloo
Nov. 12-13 and Dec. 3-4
9:30 a.m.-3 p.m.

Established last year, this multi-weekend market features vendors selling indoor and outdoor decor, bath and body care items, jewelry, children’s toys, clothing, metalwork and more. Note: Some multi-level marketing vendors in attendance.

Christkindlmarket Des Moines

Principal Park
Dec. 1, 5-9 p.m.
Dec. 2-3, 11 a.m-9 p.m.
Dec. 4, 11 a.m.-5 p.m.

A team of organizers present this German Christmas market each year in downtown Des Moines, first launched by the nonprofit Des Moines European Heritage Association (now called the Iowa European Cultural Connection) in 2016. Pick up a traditional pickle ornament, German stein or nutcracker from the Christkindlmarket store; German wood art from DSM Foundry; goat milk products from Swede Point Creamery; and a range of other glass, wood, tin, ceramic and specialty food products from vendors across Iowa and the Midwest, representing a range of European craft traditions. Fuel up with a beer, bratwurst, strudel, kringle, pretzel, Polish King sandwich or other rich food and drink options. New this year: Guests can take a photo in a reindeer-drawn sleigh from 1-4 p.m. on Dec. 4.

Kerstmarkt: Pella’s Dutch Christmas Market

Molengracht Plaza
Dec. 1-3
11 a.m.-8 p.m.

This new Pella tradition is inspired by outdoor markets in the Netherlands, featuring artisan vendors, Dutch delicacies and live music. Held in conjunction with Pella’s Christmas Tour of Homes.

via Kertmarket Pella on Facebook

Prelude to Christmas

Amana Colonies
Dec. 2-4

This weekend-long, Colonies-wide celebration brings out the best in one of Iowa’s oldest and coziest settlements. Catch carolers, food and beverage samplings, a Christmas Cookie Walk and Holiday Bazaar (schedule TBA). Don’t skip the Tannenbaum Forest in the Festhalle Barn, featuring over 60 Christmas trees and the 17-foot-tall German Christmas Pyramid.

Christmas displays in Amana — Zak Neumann/Little Village

But if you stop at only one spot, make it the Amana General Store, which includes a year-round International Christmas Market. Shop ornaments and home decor imported from around the world, surrounded by artful tree displays — any time of year!

Old World Christmas Market

National Czech and Slovak Museum and Library, Cedar Rapids
Dec. 3-4

European traditions meet “Midwest magic” at NCSML’s annual market. Shop handcrafted goods, eat holiday treats, sit on Czech Santa’s lap and celebrate the community. Visitors also enjoy free admission to the museum’s galleries on market weekend.

=”770″ class=”size-full wp-image-162787″ /> National Czech & Slovak Museum & Library in Cedar Rapids, 1400 Inspiration Place SW. — Zak Neumann/Little Village

Holiday Thieves Market

Hyatt Regency Hotel Expo Hall, Coralville
Dec. 3, 10 a.m.-6 p.m.
Dec. 4, 10 a.m.-4 p.m.

Summer of the Arts hosts this fine arts market, which is one of Iowa City’s oldest events. The Holiday Thieves Market has been around for more than half a century, and many of its vendors have returned for 20 years or more. Shop art made in every medium imaginable: paintings, photos, prints, ceramics, jewelry, sculptures, glass art and much more.

Winter Wonderland Market

Hotel Maytag Ballroom, Newton
Dec. 10
10 a.m.-2 p.m.

You can not only knock out some gift shopping among the vendor tables at this indoor market, but get them gift wrapped as well! Note: Some multi-level marketing vendors in attendance.

Winter Solstice Market

Winterset Livery, Winterset
Dec. 10, 10 a.m.-4 p.m.
Dec. 11, noon-4 p.m.

More than 20 talented creators will sell their work at this market in picturesque Madison County.

Winter Solstice Market, via


ICDD’s Betsy Potter helps a young shopper examine his options at the Kid’s Holiday Market in downtown Iowa City on Nov. 15, 2021. — Adria Carpenter/Little Village

Holiday Kids Market

Downtown Iowa City
Nov. 7-23
11 a.m.-7 p.m. (by appointment)

The Iowa City Downtown District hosts the second annual Downtown Holiday Kid’s Market throughout November, designed to offer children the chance to gift shop like a grown-up, chaperoned by “Santa’s helpers.” Young shoppers will come armed with a list and budget provided by a parent or guardian, but also have the rare opportunity browse for gifts independent of their family. Gift wrapping at the end of the 30-45 minute session also helps the kids keep their finds under wraps.

You can find out more about how it works and reserve a shopping time slot here.

Adria Carpenter/Little Village

This article was originally published in Little Village issue 312.

[gravityform id="17" title="false" description="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper your-village-form_wrapper' id='gform_wrapper_17' ><a id='gf_17' class='gform_anchor' ></a><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_17' id='gform_17' class='your-village-form' action='/holiday-markets-around-iowa-to-spice-up-your-gift-shopping/#gf_17'> <div class='gform_body'><ul id='gform_fields_17' class='gform_fields top_label form_sublabel_below description_below'><li id='field_17_7' class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible' ><h3 style="font-weight:800; font-size:34px;">Let's get started</h3> <p style="font-size:18px;">Fill out this form and we'll contact you with information about marketing with Little Village!</p></li><li id='field_17_4' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' for='input_17_4_3' ></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name gfield_trigger_change' id='input_17_4'> <span id='input_17_4_3_container' class='name_first' > <input type='text' name='input_4.3' id='input_17_4_3' value='' aria-label='First name' tabindex='2' aria-invalid="false" placeholder='First name'/> <label for='input_17_4_3' >First</label> </span> <span id='input_17_4_6_container' class='name_last' > <input type='text' name='input_4.6' id='input_17_4_6' value='' aria-label='Last name' tabindex='4' aria-invalid="false" placeholder='Last name'/> <label for='input_17_4_6' >Last</label> </span> </div></li><li id='field_17_5' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_17_5' ><span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_5' id='input_17_5' type='text' value='' class='large' tabindex='6' placeholder='Company name' aria-required="true" aria-invalid="false" /></div></li><li id='field_17_3' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_17_3' ><span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'> <input name='input_3' id='input_17_3' type='text' value='' class='large' tabindex='7' placeholder='Your email address' aria-required="true" aria-invalid="false"/> </div></li><li id='field_17_8' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_' ><label class='gfield_label' for='input_17_8' >Phone</label><div class='ginput_container'><input name='input_8' id='input_17_8' type='text' value='' /></div><div class='gfield_description'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_17' class='gform_button button' value='SUBMIT' tabindex='8' onclick='if(window["gf_submitting_17"]){return false;} window["gf_submitting_17"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_17"]){return false;} window["gf_submitting_17"]=true; jQuery("#gform_17").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=17&amp;title=&amp;description=&amp;tabindex=1' /> <input type='hidden' class='gform_hidden' name='is_submit_17' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='17' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_17' value='WyJbXSIsIjlmNzc1YTEyZmZjNmYyODk5Mzk0NDM3ZjRlOGYyZDNmIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_17' id='gform_target_page_number_17' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_17' id='gform_source_page_number_17' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="203"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_17' id='gform_ajax_frame_17'>This iframe contains the logic required to handle Ajax powered Gravity Forms.</iframe> <script type='text/javascript'>jQuery(document).ready(function($){gformInitSpinner( 17, '' );jQuery('#gform_ajax_frame_17').load( function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_17');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_17').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;if(is_form){jQuery('#gform_wrapper_17').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_17').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_17').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_17').offset().top); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_17').val();gformInitSpinner( 17, '' );jQuery(document).trigger('gform_page_loaded', [17, current_page]);window['gf_submitting_17'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_17').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_17').offset().top);jQuery(document).trigger('gform_confirmation_loaded', [17]);window['gf_submitting_17'] = false;}, 50);}else{jQuery('#gform_17').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [17, current_page]);} );} );</script><script type='text/javascript'> if(typeof gf_global == 'undefined') var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2},"base_url":"https:\/\/\/wp-content\/plugins\/gravityforms-asdf111aasdfffs-nope","number_formats":[],"spinnerUrl":"https:\/\/\/wp-content\/plugins\/gravityforms-asdf111aasdfffs-nope\/images\/spinner.gif"};jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 17) {if(typeof Placeholders != 'undefined'){ Placeholders.enable(); }} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [17, 1]) } ); </script>