I only clean my carpets myself. Previously I had hired companies to come in and do it. This however is far more expensive then it should be, plus I was never really satisfied with the results.
I started doing it on my own with a Rug Doctor. I would rent one 2 times a year - once in Spring & once in Fall. When I did this, I bought the solution that went with it. I have cats & dogs, so over time I decided it was best for me to just get my own machine. I ended up with a Bissell Pro Heat 2X and LOVE it. The machine is fantastic. It is shaped like a vacuum and handles like one. The only difference is the addition of water tanks.
In the tank, I use Genesis 950 for a cleaner. It works better then anything I have ever used. I have used it to remove all sorts of stains from my pets - and my kids. The first time I used it, it made a HUGE difference in how my carpets look. It makes them look like new - seriously like brand new.
To actually clean the carpets, I put the 950 in the solution compartment and clean water in the corresponding water tank. I use the machine on the high heat setting and adjust the floor traffic to heavy. Then just slowly go over the area. The machine automatically balances out the solution and water. After wating for about 20 minutes, I go over the carpet again just using a rinse cycle. This suck up all the dirt and stuff that the 950 loosened. Sometimes I go over it a second time just for a thorough rinse.
After I have rinsed, the room is off limits to everyone overnight so that it can dry. I usually put a dehumidifier in the room to try to suck out as much moisture as possible.
If you do it yourself, carpet cleaning can be super easy, inexpensive and can be done on YOUR own time!