Missoula Guided Fly Fishing Trips

With The Finest Montana Fly Fishing Guides

We want to show you why we love fly fishing in Montana and why we think Missoula has some of the best rivers in Montana.  Our Missoula guided fly fishing trips are tailored for the beginner and expert a like. From a day on the Blackfoot, Bitterroot or Clark Fork Rivers, to a multi-day trip fishing 3 of our major rivers, we know that you’ll end up loving our piece of paradise.  You’ll spend the day on the water with the finest of Montana fly fishing guides who are patient and willing instructors who love their jobs and want you to have a great day on the water. Check out our Missoula guided fly fishing trips below!

Float Trips

Full Day Float Trip | $675 for 1-2 people

Full Float trips include a Missoula fly fishing guide, personal instruction based on your ability, full shore lunch, transportation to and from the river (from fly shop), and all flies. Licenses and leaders, as well as other applicable gear, can be purchased at the Grizzly Hackle.

1/2 Day Float | $575 for 1-2 people

Half day floats include guiding, personal instruction based on your ability, transportation to and from the river (from fly shop), snacks and all flies. Licenses and leaders, as well as other applicable gear, can be purchased at the Grizzly Hackle.

Guided Fly Fishing Trips and Lodging

Our Missoula guided fly fishing packages were designed to give you the option of having a Montana fly fishing vacation and lodging all rolled into one. Gone are the worries that accompany a trip when trying to find rooms for an entire group. So sit back and let us do all the work for you.

4 Days; 5 Nights |  $1975/person*

*Single Guest Rate $3950

 Have the opportunity to fish four different sections of our rivers in four days (depending on time of year). Package includes Missoula guided fly fishing and four nights lodging at our Dry Fly Apartments, right above the shop in downtown Missoula. Includes personal guided fly fishing instruction based on your ability, transportation to and from the river, full shore lunch and all flies.

*Priced based on double occupancy*.

3 Days; 4 Nights | $1512.50 /Per Person*

Single Guest Rate: $3025

If you feel like four days is too much but one day just isn’t enough, try this package on for size. Package includes Missoula guided fly fishing and four nights lodging at our Dry Fly Apartments, right above the shop in downtown Missoula. Includes personal guided fly fishing instruction based on your ability, transportation to and from the river, full shore lunch and all flies.

*Priced based on double occupancy*.

Wade Fly Fishing Trips

For those looking for a more intimate approach to Missoula fly fishing, we offer a limited number of wade days a year. We’ll take you out to one of western Montana’s smaller streams and stalk trout the old- fashioned way.

Full Day Wade | $675 for 1-2 people

Full Wade trips include guiding, personal instruction based on your ability, full shore lunch, transportation to and from the river (from fly shop) and all flies. Licenses and leaders, as well as other applicable gear can be purchased at the Grizzly Hackle.

1/2 Day Wade | $575 for 1-2 people

Any additional third person, add $175.

Half day wades include guiding, personal instruction based on your ability, transportation to and from the river (from fly shop), snacks and all flies. Licenses and leaders, as well as other applicable gear, can be purchased at the Grizzly Hackle.

Small Stream Wade Trips on Remote Streams

Full Day |  $675 for 1-2 people

We are proud to offer some great small stream fishing around the Missoula area.  There are more small streams within an hour of Missoula, that most people never fish.  Our area is known for it’s big open rivers, so most of these streams rarely see a fly.  Let our guides take you to these beautiful out of the way creeks in search of westslope cutthroat and you’ll feel like you went back in time 100 years!

Missouri River Fish Camp

We are excited to offer a new a new twist in the constant pursuit of wild, Montana trout, the Missouri River Fish Camp.  This is a 3 day 2 night option on the Missouri River near Cascade, MT.  You’ll spend 2 days floating the Missouri River and 1 day wade fishing an unnamed creek that we have exclusive private access.  Spend your nights at a brand new bunk house in the Big Belt Mountains and your days fishing with 20 year veteran guide Andy Roy.  Andy will also be your chef for the 3 days making hearty breakfasts, shore lunches and amazing dinners!  There are limited dates, so call quick to book this amazing trip.

3 Days 2 Nights | $700/person per day*

*based on double occupancy

Get in Touch with Us

  • MM slash DD slash YYYY
  • This field is for validation purposes and should be left unchanged.

Top
[gravityform id="6" title="false"]
<div class='gf_browser_unknown gform_wrapper gravity-theme white-labels_wrapper' id='gform_wrapper_6' > <div class='gform_heading'> <span class='gform_description'></span> </div><form method='post' enctype='multipart/form-data' id='gform_6' class='white-labels' action='/missoula-guided-fly-fishing-trips/' > <div class='gform_body gform-body'><div id='gform_fields_6' class='gform_fields top_label form_sublabel_below description_below'><fieldset id="field_6_5" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_above hidden_label gfield_visibility_visible" data-js-reload="field_6_5"><legend class='gfield_label gfield_label_before_complex' >Name<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><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' id='input_6_5'> <span id='input_6_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_6_5_3' value='' aria-required='true' placeholder='First Name' /> <label for='input_6_5_3' class='hidden_sub_label screen-reader-text'>First</label> </span> <span id='input_6_5_6_container' class='name_last' > <input type='text' name='input_5.6' id='input_6_5_6' value='' aria-required='true' placeholder='Last Name' /> <label for='input_6_5_6' class='hidden_sub_label screen-reader-text'>Last</label> </span> </div></fieldset><div id="field_6_7" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_6_7"><label class='gfield_label' for='input_6_7' >Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_7' id='input_6_7' type='text' value='' class='large' placeholder='Email' aria-required="true" aria-invalid="false" /> </div></div></div></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_6' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_6"]){return false;} window["gf_submitting_6"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_6"]){return false;} window["gf_submitting_6"]=true; jQuery("#gform_6").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_6' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='6' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_6' value='WyJbXSIsIjg3ZWFlYzMwYzIzOTIyODdiYjFkMjkxYzE4MmE1MTg2Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_6' id='gform_target_page_number_6' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_6' id='gform_source_page_number_6' 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_2" name="ak_js" value="11"/><script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>
[gravityform id="7" title="false"]
<div class='gf_browser_unknown gform_wrapper gravity-theme white-labels_wrapper' id='gform_wrapper_7' > <div class='gform_heading'> <span class='gform_description'></span> </div><form method='post' enctype='multipart/form-data' id='gform_7' class='white-labels' action='/missoula-guided-fly-fishing-trips/' > <div class='gform_body gform-body'><div id='gform_fields_7' class='gform_fields top_label form_sublabel_below description_below'><fieldset id="field_7_1" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_7_1"><legend class='gfield_label gfield_label_before_complex' >Name<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><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' id='input_7_1'> <span id='input_7_1_3_container' class='name_first' > <input type='text' name='input_1.3' id='input_7_1_3' value='' aria-required='true' placeholder='First Name' /> <label for='input_7_1_3' class='hidden_sub_label screen-reader-text'>First</label> </span> <span id='input_7_1_6_container' class='name_last' > <input type='text' name='input_1.6' id='input_7_1_6' value='' aria-required='true' placeholder='Last Name' /> <label for='input_7_1_6' class='hidden_sub_label screen-reader-text'>Last</label> </span> </div></fieldset><div id="field_7_3" class="gfield gfield--width-half gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_7_3"><label class='gfield_label' for='input_7_3' >Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_3' id='input_7_3' type='text' value='' class='large' placeholder='Email Address' aria-required="true" aria-invalid="false" /> </div></div><div id="field_7_5" class="gfield gfield--width-half gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_7_5"><label class='gfield_label' for='input_7_5' >Phone<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_phone'><input name='input_5' id='input_7_5' type='text' value='' class='large' placeholder='Phone Number' aria-required="true" aria-invalid="false" /></div></div><div id="field_7_4" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_7_4"><label class='gfield_label' for='input_7_4' >Message<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_4' id='input_7_4' class='textarea medium' placeholder='Please tell us about what you&#039;re interested in!' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div></div></div></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_7' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_7"]){return false;} window["gf_submitting_7"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_7"]){return false;} window["gf_submitting_7"]=true; jQuery("#gform_7").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_7' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='7' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_7' value='WyJbXSIsIjg3ZWFlYzMwYzIzOTIyODdiYjFkMjkxYzE4MmE1MTg2Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_7' id='gform_target_page_number_7' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_7' id='gform_source_page_number_7' 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_3" name="ak_js" value="132"/><script>document.getElementById( "ak_js_3" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>
[gravityform id="6" title="false"]
<div class='gf_browser_unknown gform_wrapper gravity-theme white-labels_wrapper' id='gform_wrapper_6' > <div class='gform_heading'> <span class='gform_description'></span> </div><form method='post' enctype='multipart/form-data' id='gform_6' class='white-labels' action='/missoula-guided-fly-fishing-trips/' > <div class='gform_body gform-body'><div id='gform_fields_6' class='gform_fields top_label form_sublabel_below description_below'><fieldset id="field_6_5" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_above hidden_label gfield_visibility_visible" data-js-reload="field_6_5"><legend class='gfield_label gfield_label_before_complex' >Name<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><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' id='input_6_5'> <span id='input_6_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_6_5_3' value='' aria-required='true' placeholder='First Name' /> <label for='input_6_5_3' class='hidden_sub_label screen-reader-text'>First</label> </span> <span id='input_6_5_6_container' class='name_last' > <input type='text' name='input_5.6' id='input_6_5_6' value='' aria-required='true' placeholder='Last Name' /> <label for='input_6_5_6' class='hidden_sub_label screen-reader-text'>Last</label> </span> </div></fieldset><div id="field_6_7" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_6_7"><label class='gfield_label' for='input_6_7' >Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_7' id='input_6_7' type='text' value='' class='large' placeholder='Email' aria-required="true" aria-invalid="false" /> </div></div></div></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_6' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_6"]){return false;} window["gf_submitting_6"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_6"]){return false;} window["gf_submitting_6"]=true; jQuery("#gform_6").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_6' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='6' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_6' value='WyJbXSIsIjg3ZWFlYzMwYzIzOTIyODdiYjFkMjkxYzE4MmE1MTg2Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_6' id='gform_target_page_number_6' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_6' id='gform_source_page_number_6' 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_4" name="ak_js" value="177"/><script>document.getElementById( "ak_js_4" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>